小编xin*_*doo的帖子

在高版本 JDK(例如 jdk11、14)中,单例双重检查锁定是否仍然需要 volatile?

在 Java 单例中,大多数人告诉我们我们需要 volatile 来防止指令重新排序,但有人告诉我它在高版本 JDK 中不再需要 volatile,对吗?如果是这样,为什么?

public class SafeDCLFactory {
  private volatile Singleton instance;

  public Singleton get() {
    if (instance == null) {  // check 1
      synchronized(this) {
        if (instance == null) { // check 2
          instance = new Singleton();
        }
      }
    }
    return instance;
  }
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
52
查看次数

标签 统计

java ×1