JAVA中的VOLATILE
JAVA中VOLATILE具有可见性,synchronized和final都具有可见性。
VOLATILE的适用场景有
-
运算结果并不依赖变量的当前值,或者能够确保只有单一的线程修改变量的值
-
变量不需要与其他的状态变量共同参与不变约束。
客观的说适合一次性写,多次读的场景。比如一个boolean变量,线程A对其进行写,线程B,C,D对其进行读,这样的场景就合适。
使用volatiel变量的第二个语义是禁止指令重排序优化:禁止指令重排序的优化解决的问题为,防止后面的代码放到了前面来执行。
先行并发原则:是判断数据是否存在竞争,线程是否安全的依据,以下具有此特性
-
程序次序规则
-
管程锁定规则
-
volatile变量规则
-
线程启动规则
-
线程终止规则
-
线程中断规则
-
对象终结规则
-
传递性:

浙公网安备 33010602011771号