设计模式-单例模式
Posted AshShawn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-单例模式相关的知识,希望对你有一定的参考价值。
//单例饿汉
public class Singleton01 {
private static final Singleton01 INSTANCE = new Singleton01();
private Singleton01() {
}
public static Singleton01 getInstance() {
return INSTANCE;
}
}
public class Singleton02 {
private volatile static Singleton02 INSTANCE;
//为什么要使用volatile
//执行构造方法和赋值的操作可能会指令重排序,并发情况下可能有两个对象被初始化
//故使用volatile,禁止指令重排序,保证线程安全
private Singleton02() {}
public static Singleton02 getInstance() {
if (INSTANCE == null) {
synchronized (Singleton02.class) {
if (INSTANCE == null) {
INSTANCE = new Singleton02();
}
}
}
return INSTANCE;
}
}
public class Singleton03 {
private Singleton03() {
}
//静态内部类自带懒加载
private static class SingletonHolder {
private static Singleton03 INSTANCE = new Singleton03();
}
public static Singleton03 getInstance() {
return SingletonHolder.INSTANCE;
}
}
public enum Singleton04 {
//枚举
INSTANCE;
}
以上是关于设计模式-单例模式的主要内容,如果未能解决你的问题,请参考以下文章