|
1、Java Concurrency In Practice的List
public class Singleton { private static class SingletonHolder { public static Singleton resource = new Singleton(); } public static Singleton getResource() { return SingletonHolder.resource ; }
private Singleton(){
} }
2、effective Java
public class Singleton { public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public void method(){ //... } public static void main(String[] a){ //调用方法。 Singleton.INSTANCE.method(); } }
3、利用枚举巧妙创建单实例
/** * 利用枚举巧妙创建单实例 */ public enum Singleton { INSTANCE; public void method(){ //... } public static void main(String[] a){ //调用方法。 Singleton.INSTANCE.method(); } }
4、双重锁
public class Singleton { private static volatile Singleton instance = null; /** * 防止其他人new对象 */ private Singleton(){ System.out.println("init"); } public static Singleton getInstance(){ if(instance == null){ synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } return instance; } }
|