java volatile与锁 个人理解

来源:互联网 发布:优化软件点击 编辑:程序博客网 时间:2024/06/01 15:02

书上意思:

当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序,volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值!

volatile

  1. volatile 只保证了共享变量在线程间的可见性,当某个线程修改了变量V,在底层计算机中会先将当前值写入内存中且使其他处理器(注意是处理器)中变量V所在地址的缓存行(块)失效,如TLB,L1,L2,L3缓存。

锁既保证了线程的互斥,也拥有与volatile一样的效果

所以volatile被称为轻量级的锁?

以上是本人觉得比较符合理解的。。。。

原创粉丝点击