为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕粉3320748 2016-05-14 17:53:57
public static Singleton getInstance() {           if (instance == null) {               synchronized(instance) {                   if (instance == null) {                       instance = new Singleton();                   }               }           }           return instance;      }
查看完整描述

1 回答

?
Genment

TA贡献43条经验 获得超25个赞

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;
    }
}


查看完整回答
反对 回复 2016-05-15
  • 1 回答
  • 0 关注
  • 1140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信