1、java线程内存模型将确保所有线程看到这个变量的值是一致的
2、不会引起线程上下文切换和调度
3、轻量级synchronized
可见性、有序性
变量缓存行回写系统内存
处理器发现缓存行对应内存地址被修改,设置为无效状态,操作时重新读取系统内存
1、获取对象内存地址
2、初始化对象
3、内存地址指向引用变量
value由volatile修饰,不会出现数据读写不一致
get方法逻辑,key通过hash定位到segment,再hash定位到具体元素
1、volatile轻量,不会引起线程上下文切换和调度
2、volatile本质是告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主内存读取,synchronized则是锁定当前变量,只有当前线程可以访问,其他线程阻塞
3、volatile只能修饰变量
4、volatile实现变量的可见性、禁止重排序、单次读写原子性
5、volatile不会造成线程阻塞
Copyright ©2010-2022 比特日记 All Rights Reserved.