2024年4月20日发(作者:)
并发关键字
关键字一:volatile
可以这样说,volatile 关键字是 Java 虚拟机提供的轻量级的同步机制。
功能
volatile 有 2 个主要功能:
• 可见性。一个线程对共享变量的修改,其他线程能够立即得知这个修改。普通变量
不能做到这一点,普通变量的值在线程间传递需要通过主内存来完成。
• 禁止指令重排序。
底层原理
加入 volatile 关键字时,会多出 lock 前缀指令, 该 lock 前缀指令相当于内存屏障,
内存屏障会提供 3 个功能:
• 在执行到内存屏障这句指令时,在其前面的操作都已完成了
• 强制将处理器行的数据缓存写回内存
• 一个处理器的缓存回写到内存会导致其他工作内存中的缓存失效
应用场景
• 状态标记
volatile + boolean
• DCL 单例模式 (Double Check Lock,双重校验锁)
public class Singleton {
private volatile static Singleton singleton=null;
private Singleton(){}
public static Singleton getSingleton(){
if(singleton==null){
synchronized (){
if(singleton==null){
发布者:admin,转转请注明出处:http://www.yc00.com/web/1713544830a2270144.html
评论列表(0条)