Java 单例模式大乱斗

1、 饿汉模式 线程安全

public class SingleInstance1 {
	private static SingleInstance1 single=new SingleInstance1();
	private SingleInstance1(){
		
	}
	public static SingleInstance1 getInstance(){
		return single;
	}
}

2、饿汉模式 线程安全

public class SingleInstance2 {
	private static SingleInstance2 single=null;
	static{
		single=new SingleInstance2 ();
	}
	private SingleInstance2 (){
		
	}
	public static SingleInstance1 getInstance(){
		return single;
	}
}

3、懒汉模式 线程不安全

public class SingleInstance3 {
	private static SingleInstance3 single =null;
	private SingleInstance3 (){
		
	}
	public static SingleInstance3 getInstance(){
		if(single==null){
			single=new SingleInstance3 ();
		}
		return single;
	}
}

4、 懒汉模式 线程安全 效率低下

public class SingleInstance4 {
	private static SingleInstance4 single =null;
	private SingleInstance4 (){
		
	}
	public static synchronized SingleInstance4 getInstance(){
		if(single==null){
			single=new SingleInstance4 ();
		}
		return single;
	}
}

5、懒汉模式 线程安全 效率低下

public class SingleInstance5 {
	private static SingleInstance5 single =null;
	private SingleInstance5 (){
		
	}
	public static SingleInstance5 getInstance(){
		synchronized(SingleInstance5 .class){
			if(single==null){
				single=new SingleInstance5 ();
			}
		}
		return single;
	}
}

6、懒汉模式 线程安全

public class SingleInstance6 {
	private static SingleInstance6 single =null;
	private SingleInstance6 (){
		
	}
	public static SingleInstance6 getInstance(){
		if(single==null){
			synchronized(SingleInstance6 .class){
				if(single==null){
					single=new SingleInstance6 ();
				}
			}
		}
		return single;
	}
}

7、 懒汉模式 线程安全 效率高 静态内部类

public class SingleInstance7 {
	private SingleInstance7 (){
		
	}
	public static SingleInstance7 getInstance(){
		return getSingleInstance.single;
	}
	private static class getSingleInstance{
		private static SingleInstance7 single=new SingleInstance7 ();
	}
	
}

8、 懒汉模式 线程安全 效率高 枚举

public enum SingleInstance8 {
	INSTANCE;
}
posted @ 2021-11-01 20:46  微笑带你去  阅读(35)  评论(0)    收藏  举报