欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

单例模式

程序员文章站 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;
    }
}
总结:不利用线程同步的方式,而是在类被加载的时候就生成一个实例对象。这个带来的问题就是,不管这个单例有没有用到都会一直存在。
相关标签: java 设计模式