面试手写-双重检查,搞定了吗?
双重判断思路:先判断,再加锁,又在判断
public class SingletonDouble {
private static volatile SingletonDouble INSTANCE = null;
private SingletonDouble(){ }
public static SingletonDouble getInstance() {
// 第一次判断为空,则上锁;如果不为空,那么就直接return INSTANCE
if (null == INSTANCE) {
synchronized (SingletonDouble.class) {
// 第二次判断为空,则初始化
if (null == INSTANCE) {
try {
} catch (Exception e) {
e.printStackTrace();
}
INSTANCE = new SingletonDouble();
}
}
}
return INSTANCE;
}
//测试的不用管
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Thread(() -> {
System.out.println(SingletonDouble.getInstance().hashCode());
}).start();
}
}
}
更多文章已经被GitHub收录以及电子书等资料:https://github.com/niutongg/JavaLeague
部分截图如下:
还没有评论,来说两句吧...