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;
}
}
此方法可以线程安全的创建单例,但不是懒加载
近期评论