public class Singleton {
private static Singleton UniqueInstance;
private Singleton(){}
public static Singleton getInstance(){
if(UniqueInstance == null)
UniqueInstance = new Singleton();
return UniqueInstance;
}
}
* Notes:
* 多线程的处理注意点:
* 1.可在getInstance()方法前加上synchronized关键字使方法同步,如:public static synchronized Singleton getInstance()
* 2.使用"急切(eagerly)"过创建实例,而不用延迟实例化的方法.此时的做法是:
public class Singleton {
private static Singleton UniqueInstance = new Singleton();//这里直接实例化之
private Singleton(){}
public static Singleton getInstance(){
return UniqueInstance; //不再判断,直接返回对象.
}
}
3.双重检查加锁(double-checked locking),使用关键字volatile,不过只对JDK1.5及之后版本有用.
public class Singleton {
private volatile static Singleton UniqueInstance;
private Singleton(){}
public static Singleton getInstance(){
if(UniqueInstance == null)//只有第一次时才彻底执行此if代码块.
synchronized (Singleton.class){
if(UniqueInstance == null)//需要再次检查,为什么???因为这是多线程环境,任一时刻可能都有其他线程竞争,如前一个判断之后就已经有其他线程实例化了此单件对象,此判断非多余的.
UniqueInstance = new Singleton();
}
return UniqueInstance;
}
}
分享到:
相关推荐
单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解
单件模式单件模式单件模式单件模式单件模式单件模式单件模式单件模式
设计模式_--_工厂模式和单件模式设计模式_--_工厂模式和单件模式
模式 很好的例子模式 很好的例子模式 很好的例子模式 很好的例子模式 很好的例子设计模式的一 种单件 模式 很好的例子
工厂方法和单件模式结合示例DEMO,语言C#.
C#单件模式例子代码 内含C#编写源代码
用c++实现的单件模式 单一头文件 直接继承可用
设计模式中的单件模式,此程序是基于C#语言的,C#语言容易理解!
sql server 数据库单件模式连接
这份文档以例子的形式讲诉了设计模式之单件模式,希望可以帮助学习的人!
设计模式之单实例模式,用java实现的单件模式(单实例模式),里面附有详细的注释!
这是个人使用的临时文件,内容为单件模式,使用了static来实现相应的机能
用单件模式封装的写日志文件,适于初学设计模式的例子,也可以使用,可重入的。如有问题,请多多指教
单件模式(Single Pattern),C#的实现代码。根据不同需求的5种实现方式。
单件模式实例,有极大的参考价值
参考多个资料,自己写的一个单件模式 参考多个资料,自己写的一个单件模式 参考多个资料,自己写的一个单件模式
架构和模式应该是一个属于相互涵盖的过程,但是总体来说架构更加关注的是所谓的High-Level Design,而模式关注的重点在于通过经验提取的“准则或指导方案”在设计中的应用,因此在不同层面考虑问题的时候就形成了不同...
单件模式厂类
Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现