单例模式:处理多线程的三种方法
1. 同步方法
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(uniqueInstance==null) {
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
2. 创建"急切"实例
public class Singleton {
private static Singleton uniqueInstance=new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return uniquInstance;
}
}
3. 双重检查加锁
public class Singleton {
private volatile* static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if(uniqueInstance==null) {
synchronized(Singleton.class) {
if(uniqueInstance==null) {
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}