public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() { } /** * SingletonHolder is loaded on the first execution of Singleton.getInstance() * or the first access to SingletonHolder.INSTANCE, not before. */ private static class SingletonHolder { public static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.INSTANCE; } }
99%的Java程序员实现不了一个完美的单例模式,看看Wiki上给出的最佳实现:http://t.cn/zOvZMy3 通过单例模式全面了解Double-checked locking以及并发时候的锁的问题:http://t.cn/aKbmIb