public class Singleton {
private static Singleton uniqueInatance;
private Singleton() {
}
/**
* 经典方式,多线程环境下不能保证单例,懒加载模式
*
* @return
*/
public static Singleton getInstance() {
if (uniqueInatance == null) {
uniqueInatance = new Singleton();
}
return uniqueInatance;
}
/**
* 1.急切模式,能保证单例,一开始就创建实例
*/
private static Singleton uniqueInatance1 = new Singleton();
public static Singleton getUniqueInatance1() {
return uniqueInatance1;
}
/**
* 2.同步方式,能保证单例,但对性能影响比较大
*/
private static Singleton uniqueInatance2;
public static synchronized Singleton getUniqueInatance2() {
if (uniqueInatance2 == null) {
uniqueInatance2 = new Singleton();
}
return uniqueInatance2;
}
/**
* 3.双重检查模式,能保证单例,需要时创建对象,对性能影响可以忽略不计
*/
private volatile static Singleton uniqueInatance3;
public static synchronized Singleton getUniqueInatance3() {
if (uniqueInatance3 == null) {
synchronized (Singleton.class){
if (uniqueInatance3==null){
uniqueInatance3=new Singleton();
}
}
}
return uniqueInatance3;
}
}
java设计模式之单例
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 有些时候,我们想要一个类在整个系统中仅存在一个实例。比如说,系统给我们提供了一个打印机硬件设施,但是我们在系统中多...
- 单例设计模式(Singleton Pattern)是最简单且常见的设计模式之一,主要作用是提供一个全局访问且只实例...