在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较 ...
分类:
编程语言 时间:
2016-08-22 19:57:50
阅读次数:
169
1. 可重入函数 (1)不使用静态变量和全局非const变量 (2)不使用锁 (3)不调用任何不可重入函数 (4)使用volatile防止寄存器缓存变量 See Aslo : CPU的乱序执行,会使得对共享变量的访问变得不可知 2. 线程 用户使用的是用户态线程,Kernel运行的是内核态的线程 O ...
分类:
编程语言 时间:
2016-08-22 12:21:52
阅读次数:
169
File is a named location on disk to store related information. It is used to permanently store data in a non-volatile memory (e.g. hard disk). Since, ...
分类:
编程语言 时间:
2016-08-21 22:38:22
阅读次数:
221
例子: int i =10; int j = i; //1 int k = i; //2 1、2两句中,i 没有被用作左值,这时编译器认为i 的值没有发生变化, i赋值给j后没有被释放掉,继续直接赋值给k。 例子: volatile int i = 10 ; int j = i; int k = i ...
分类:
其他好文 时间:
2016-08-21 21:16:00
阅读次数:
145
同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 从运行结果来,对printC()方法(非静态)的调用和对printA()方法、printB()方法(静态)的调用时 ...
分类:
编程语言 时间:
2016-08-21 21:12:47
阅读次数:
184
原子量和普通变量相比,主要体现在读写的线程安全上。对原子量的写是原子的,由CAS操作保证原子性。对原子量的读可以读到最新值,由volatile关键字来保证可见性。 ublic class AtomicInteger extends Number implements java.io.Serializ ...
分类:
其他好文 时间:
2016-08-21 13:59:06
阅读次数:
131
JDK5.0之前传统线程 Java线程(一):线程安全与不安全 Java线程(二):线程同步synchronized和volatile Java线程(三):线程协作-生产者/消费者问题 Java线程(四):线程中断、线程让步、线程睡眠、线程合并 Java线程(五):Timer和TimerTask J ...
分类:
编程语言 时间:
2016-08-19 16:20:16
阅读次数:
231
CopyOnWriteArrayList, 内部通过锁+volatile修饰的数组实现的 是一种线程安全的ArrayList,写操作时会copy一个新的内部数组出来替换掉旧 的数组。遍历操作不用加锁了,但是遍历的数组不会感知即时变更,只是一个快照。,读写都 加锁的实现方式要高效一些。CopyOnWr ...
分类:
其他好文 时间:
2016-08-19 00:53:42
阅读次数:
167
第3章:对象的共享 volatile关键字的理解 volatile变量,用来确保将变量的更行操作通知到其他线程。当变量申明为volatile类型后,编译器与运行时都会注意带这个变量时共享的,因此不会将该变量上的操作与其他内存操作一起重新排序。volatile变量不会被缓存到寄存器或者其他处理器不可见 ...
分类:
编程语言 时间:
2016-08-15 13:02:36
阅读次数:
186
转载:http://shmilyaw-hotmail-com.iteye.com/blog/1672779 一个多线程的示例引发的问题 在讨论这个关键字之前先看一个多线程的示例代码: Java代码 public class RaceCondition { private static boolean ...
分类:
编程语言 时间:
2016-08-14 07:27:48
阅读次数:
145