volatile是java虚拟机提供的最轻量级的同步机制。
volatile的两种特性:可见性和禁止指令重排序优化(有序性)
一、可见性指当一条线程修改了这个变量的值,新值对于其他线程可以立即得知。
voltile只能保证可见性,且必须满足以下两个条件:
1、运算结果并不依赖当前值,或者能够确保只有单一线程修改变量的值
2、变量不需要与其他的状态变量共同参与不变约束
二、禁止指令重排序优化
普通变量仅仅保证在该方法的执行过程中所有依赖赋值结果的地方都能获取到正确的结果,而不能保证变量赋值操作的顺序与程序执行顺序一致
也就是java 内存模型中“线程内表现为串行的语义”
网友评论