EFFECTIVE JAVA 第十章 并发 66.同步访问共享的可变数据 *java语言规范保证读或写一个变量是原子的(可以保证返回的值是某个线程保存在该变量中的),除非这个变量的类型为long或double。(但并不保证一个线程写入的值对于另一个线程是可见) *synchronized修饰方法、s ...
分类:
编程语言 时间:
2016-12-27 23:04:13
阅读次数:
366
问题现象原因分析任务调度逻辑汇总分析解决方案问题现象在我们的系统中,使用了这样的配置来开启异步操作:spring配置<task:annotation-drivenexecutor="executor"scheduler="scheduler"/><task:executorid="executor"pool-size="16-128"keep-alive="60"rejection-pol..
分类:
编程语言 时间:
2016-12-24 07:55:54
阅读次数:
678
Java 并发 线程属性 @author ixenos 线程优先级 1.每当线程调度器有机会选择新线程时,首先选择具有较高优先级的线程 2.默认情况下,一个线程继承它的父线程的优先级 3.线程的优先级高度依赖于系统,当虚拟机依赖于宿主机平台的线程实现机制时,Java线程的优先级被映射到宿主机平台的优 ...
分类:
编程语言 时间:
2016-12-24 01:29:30
阅读次数:
182
单核,多核CPU的原子操作 一. 何谓"原子操作":原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch). 二. 为什么关注原子操作?1. 如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费 ...
分类:
其他好文 时间:
2016-12-04 00:20:20
阅读次数:
244
线程有两种调度模型:1、分时调度模型 所有线程轮流使用CPU的使用权,平均分配给每个线程占用CPU的时间片。2、抢占式调度模型 优先让给线程高的线程使用CPU,如果线程的优先级相同,那么随机选择一个,优先级高的线程获取的CPU的时间片相对多一些。Java使用的是抢占式调度模型 查阅API常用方法: ...
分类:
编程语言 时间:
2016-11-26 17:22:07
阅读次数:
140
【单件类】 保证只能有一个实例化对象,并提供全局的访问入口。 【设计注意事项】 1.阻止所有实例化的方法: private 修饰构造函数,赋值构造函数,赋值拷贝函数。 2.定义单实例化对象的方法: a.使用static 修饰 b.使用new+delete的方法 3.多线程版本: 使用双检测锁定,即先 ...
分类:
编程语言 时间:
2016-11-11 01:35:03
阅读次数:
345
转载:http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字 ...
分类:
其他好文 时间:
2016-11-09 01:11:32
阅读次数:
354
1.线程调度知识:线程类Thread的了解,几个thread的方法。thread.sleep(),thread.join()。(调用join方法的那个线程会立刻执行)。 object.wait()方法,notifyAll()方法。 2.线程间通信知识(共享资源):synchronized,volat ...
分类:
编程语言 时间:
2016-10-14 06:59:02
阅读次数:
164
线程调度 假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令。 那么Java是如何对线程进行调用的呢? 线程有两种调度模型: 分时调度模型 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片 ...
分类:
编程语言 时间:
2016-10-05 21:51:59
阅读次数:
188
JDK内部提供了大量的API和框架,这里主要介绍三部分 多线程同步控制方法 线程池,提高线程调度的性能 JDK的并发容器 重入锁:java.util.concurrent.locks.ReenterLock 在代码中,类ReenterLock实现了Runnable,其中有static的变量i,在ru... ...
分类:
编程语言 时间:
2016-09-28 01:19:55
阅读次数:
315