单例模式
单例模式,就是Java进程中只存在一个类的实例。
创建的方法:
1. 懒汉式(首次使用时创建,之后判断单例实例存不存在)
- 线程安全(加锁)
- 线程不安全
2. 饿汉式(在类初始化的时候就会创建,线程安全)
private static final XXX Instance=new XXX();
3. 双检锁 使用volatile,防止指令重排;加锁;
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;
}
}
4. 静态内部类
- 内部类在使用时才会创建实例
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){
}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
5. 枚举类
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
本文来自博客园,作者:帅气的涛啊,转载请注明原文链接:https://www.cnblogs.com/handsometaoa/p/17022982.html