猿问

在执行这段代码时,显示的错误是“对非最终字段执行同步,双重检查锁定”,请问应该怎么改过来?


public static Singleton getInstance() {  
        if (instance == null) {  
            synchronized(instance) {  
                if (instance == null) {  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance; 
    }


慕粉3320748
浏览 1141回答 1
1回答

Genment

public class Singleton {      private volatile static Singleton singleton;            private Singleton (){}            public static Singleton getSingleton() {          if (singleton == null) {              synchronized (Singleton.class) { // <<- 你的instance是null,不能使用null作为锁                  if (singleton == null) {                      singleton = new Singleton();                  }              }         }         return singleton;     } }
随时随地看视频慕课网APP

相关分类

Java
我要回答