1.懒汉式-线程不安全
public class SingletonLazyNoSafe { private static SingletonLazyNoSafe singletonLazyNoSafe; private SingletonLazyNoSafe() {} public static SingletonLazyNoSafe getInstance(){ if (singletonLazyNoSafe ==null){ singletonLazyNoSafe = new SingletonLazyNoSafe(); } return singletonLazyNoSafe; } }
2.懒汉式-线程安全
public class SingletonLazySafe { private static SingletonLazySafe singletonLazySafe; private SingletonLazySafe(){ } public synchronized static SingletonLazySafe getInstance(){ if (singletonLazySafe == null){ singletonLazySafe = new SingletonLazySafe(); } return singletonLazySafe; } }
3.饿汉式-线程安全
public class SingletonHungerSafe { private static SingletonHungerSafe singletonHungerSafe = new SingletonHungerSafe(); private SingletonHungerSafe(){} public static SingletonHungerSafe getInstance(){ return singletonHungerSafe; } }
4.饿汉式-静态代码块-线程安全
public class SingletonHungerStaticBlockSafe { private static SingletonHungerStaticBlockSafe singletonHungerStaticBlockSafe; static { singletonHungerStaticBlockSafe = new SingletonHungerStaticBlockSafe(); } private SingletonHungerStaticBlockSafe(){} public static SingletonHungerStaticBlockSafe getInstance(){ return singletonHungerStaticBlockSafe; } }
5.懒汉式-静态内部类-线程安全
public class SingletonStaticInnerClass { private SingletonStaticInnerClass(){} private static class InstanceSingleton{ public static final SingletonStaticInnerClass SINGLETON_STATIC_INNER_CLASS = new SingletonStaticInnerClass(); } public static SingletonStaticInnerClass getInstance(){ return InstanceSingleton.SINGLETON_STATIC_INNER_CLASS; } }
6.懒汉式-双重校验锁-线程安全
public class SingletonDoubleVerifyLock { private static SingletonDoubleVerifyLock singletonDoubleVerifyLock; private SingletonDoubleVerifyLock(){} public static SingletonDoubleVerifyLock getInstance(){ if (singletonDoubleVerifyLock == null){ synchronized (SingletonDoubleVerifyLock.class){ if (singletonDoubleVerifyLock == null){ singletonDoubleVerifyLock = new SingletonDoubleVerifyLock(); } } } return singletonDoubleVerifyLock; } }
7.懒汉式-枚举实现-线程安全(推荐)
public enum SingletonEnum { INSTANCE; SingletonEnum() {} }
作者:李帅超
链接:https://www.jianshu.com/p/ea1ad96255b7
新