java并发需要保证原子性,可见性,有序性。
http://www.cnblogs.com/expiator/p/9226775.html
一、volatile关键字作用如下:
1、volatile关键字,可以保证可见性。即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2、volatile无法保证对变量的任何操作都是原子性的。
3、volatile关键字能禁止指令重排序,所以volatile能在一定程度上保证有序性。
4. synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,
而volatile关键字在某些情况下性能要优于synchronized,但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性。
二、volatile使用情景:
通常来说,使用volatile必须具备以下2个条件:
1.对变量的写操作不依赖于当前值
2.该变量没有包含在具有其他变量的不变式中
参考博客: