单例模式
程序员文章站
2022-07-12 23:38:00
...
单例模式
1.1饿汉式
/**
* 单例
*
* @author lzk
*
*/
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton GetInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
总结:利用双重锁的方式这样颗粒度变小了,但还是利用同步的方式来解决资源共享问题。
不采取任何措施造成的线程不安全问题,是因为在程序中出现了“竞态条件”,由于不恰当的执行时序而出现不正确的结果。最常见的竞态条件类型就是“先检查后执行”操作,即通过一个可能失效的观测结果来决定下一步的动作。
1.2饱汉式
/**
* 单例
*
* @author lzk
*
*/
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton GetInstance() {
return instance;
}
}
总结:不利用线程同步的方式,而是在类被加载的时候就生成一个实例对象。这个带来的问题就是,不管这个单例有没有用到都会一直存在。
上一篇: BlazeDS集成 Flex+Tomcat开发J2EE
下一篇: 简单工厂模式