youlookwhat / DesignPattern

📚 Java 23种设计模式全归纳
https://youlookwhat.github.io/DesignPattern
4.73k stars 1.4k forks source link

双重检查加锁单例模式 是否需要加 volatile 关键字修饰? #5

Open SummerXSH opened 5 years ago

SummerXSH commented 5 years ago

在双重检查加锁单例模式 是否需要加 volatile 关键字修饰来保证可见性问题?

youlookwhat commented 5 years ago

严格来说需要加,可以加上volatile 关键字修饰。

被volatile修饰的变量不参与指令重排, 在操作volatile变量时 在变量操作之前的代码一定是执行完毕并且是可见的, 在变量操作之后的代码一定是还没有被执行的。

beautifulrainday commented 4 years ago

应该是要的把