create singleton in java

using enum as Singletion

public enum  EasySingleton {

    EASY_SINGLETON;

    public void sayHello() {
        System.out.println("hello singleton");
    }
}    

枚举类做单例。 创建单例线程安全,使用简便;

double checked locking

public class DoubleCheckedLockingSingleton{
    private volatile DoubleCheckedLockingSingleton INSTANCE;

    private DoubleCheckedLockingSingleton(){}

    public DoubleCheckedLockingSingleton getInstance(){
     if(INSTANCE == null){
        synchronized(DoubleCheckedLockingSingleton.class){
            //double checking Singleton instance
            if(INSTANCE == null){
                INSTANCE = new DoubleCheckedLockingSingleton();
            }
        }
     }
     return INSTANCE;
    }
}

双重检查锁定。实现懒加载并保证创建单例的线程安全。

final static instance

public class Singleton{
    //initailzed during class loading
    private static final Singleton INSTANCE = new Singleton();

    //to prevent creating another instance of Singleton
    private Singleton(){}

    public static Singleton getSingleton(){
        return INSTANCE;
    }
}    

此方法可以线程安全的创建单例,但不是懒加载