线程安全的单例模式
- public
final class EagerSingleton - {
-
private static EagerSingleton singObj = new EagerSingleton(); -
-
private EagerSingleton(){ -
} -
-
public static EagerSingleton getSingleInstance(){ -
return singObj; -
} - }
- public
final class LazySingleton - {
-
private static LazySingleton singObj = null; -
-
private LazySingleton(){ -
} -
-
public static LazySingleton getSingleInstance(){ -
if(null == singObj ) singObj = new LazySingleton(); -
return singObj; -
} - }
- public
final class ThreadSafeSingleton - {
-
private static ThreadSafeSingleton singObj = null; -
-
private ThreadSafeSingleton(){ -
} -
-
public static Synchronized ThreadSafeSingleton getSingleInstance(){ -
if(null == singObj ) singObj = new ThreadSafeSingleton(); -
return singObj; -
} - }
- public
final class DoubleCheckedSingleton - {
-
private static DoubleCheckedSingletonsi ngObj = null; -
-
private DoubleCheckedSingleton(){ -
} -
-
public static DoubleCheckedSingleton getSingleInstance(){ -
if(null == singObj ) { -
Synchronized(DoubleCheckedSingleton.class){ -
if(null == singObj) -
singObj = new DoubleCheckedSingleton(); -
} -
} -
return singObj; -
} - }
- public
class Singleton - {
-
private static class SingletonHolder -
{ -
public final static Singleton instance = new Singleton(); -
} -
-
public static Singleton getInstance() -
{ -
return SingletonHolder.instance; -
} - }