JAVA中的VOLATILE

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