验证中...
片段 1 片段 2 片段 3 片段 4 片段 5 片段 6 片段 7
懒汉模式-线程不安全
原始数据 复制代码
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
懒汉模式-线程安全
原始数据 复制代码
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
饿汉模式
原始数据 复制代码
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){
}
public static Singleton getInstance() {
return instance;
}
}
饿汉模式-变种
原始数据 复制代码
public class Singleton {
private static Singleton instance = null;
static {
instance = new Singleton();
}
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
静态内部类
原始数据 复制代码
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){
}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
双重校验锁
原始数据 复制代码
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){
}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
枚举
原始数据 复制代码
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}

评论列表( 5 )

又是空白 2018-04-04 09:25

新手表示老是记不住啊,要知道什么原理才能更好理解为什么代码顺序要那么写呢

390077_xuliugen
徐刘根 2018-02-13 21:20

@javaalpha 静态内部类的那种方式,个人墙裂推荐

562689_javaalpha
javaalpha 2018-01-09 18:34

你觉得哪种模式最推荐呢?

390077_xuliugen
徐刘根 2017-10-19 20:42

@123 已改

1239477_qq1971237545com
123 2017-10-19 15:09

第四种写法有误啊!

你可以在登录后,发表评论

搜索帮助

14_float_left_people 14_float_left_close