- volatile相当于轻量级锁
- 被volatile修饰的变量在线程之间是可见的(一个线程修改了这个变量的值,在另外一个线程之中能够读到修改后的值)
- synchronized也是可以保证变量被线程修改之后,线程之间的的可见性的。
- 可见性的前提是多个线程对同一个锁进行竞争。
- volatile的实现原理:
a. 被volatile修饰的变量,在jvm执行的时候,会比那些没有volatile修饰的变量多一个lock指令。
b. 将各自线程拷贝的变量(缓存行中)经过修改之后写回主存中
c. 使其他线程中拷贝的变量失效()
缓存行: cpu缓存的最小单位
26 再谈volatile
最新推荐文章于 2022-04-01 10:36:51 发布