双重检测锁实现单例模式
程序员文章站
2022-07-14 09:52:06
...
package com.hnjd.singleton;
/**
* 双重检测锁实现单例模式
*
* @author 10912
*
*/
public class SingletonDemo03 {
private static SingletonDemo03 singleton = null;
private SingletonDemo03() {
}
public static SingletonDemo03 getInstance() {
if (singleton == null) {
SingletonDemo03 sl;
synchronized (SingletonDemo03.class) {
sl = singleton;
if (sl == null) {
synchronized (SingletonDemo03.class) {
if (sl == null) {
sl = new SingletonDemo03();
}
}
}
}
}
return singleton;
}
}
问题:由于编译器优化原因和JVM底层内部模型原因,偶尔会出问题不建议使用。