//未处理
public class Singleton {
private static Singleton singleton;
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
//其他方法
}
//多线程
public class Singleton_1 {
private static Singleton_1 singleton;
private Singleton_1(){}
//synchronized迫使每个线程在进入这个方法之前,要先等候别的线程离开该方法。
//也就是说,不会有两个线程可以同时进入这个方法。
//但这样耗费不较大。
public static synchronized Singleton_1 getInstance(){
if(singleton == null){
singleton = new Singleton_1();
}
return singleton;
}
//其他方法
}
//急切创建实例;
public class Singleton_2 {
private static Singleton_2 singleton = new Singleton_2() ;
private Singleton_2(){}
public static Singleton_2 getInstance(){
return singleton;
}
//其他方法
}
// 双重检查加锁;
/**
* 此方式仅适用于 jdk 1.4以后的版本
* @author dxq
*
*/
public class Singleton_3 {
private volatile static Singleton_3 singleton;
private Singleton_3(){}
public static Singleton_3 getInstance(){
if(singleton == null){
synchronized (Singleton_3.class){
if(singleton == null){
singleton = new Singleton_3();
}
}
}
return singleton;
}
//其他方法
}
head first 设计模式——(单件模式)
最新推荐文章于 2024-09-17 22:21:07 发布