单例模式

单例模式,就是Java进程中只存在一个类的实例。
创建的方法:

1. 懒汉式(首次使用时创建,之后判断单例实例存不存在)

  1. 线程安全(加锁)
  2. 线程不安全

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. 静态内部类

  1. 内部类在使用时才会创建实例
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() {
	}
}
posted @ 2023-01-03 17:40  帅气的涛啊  阅读(16)  评论(0编辑  收藏  举报