提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在之前的博客中我们简单的介绍了单例模式,并且举例说明了其中的懒汉(不安全),饿汉(安全)的两种 不同的单例模式,现在我们来学习另外的5种单例模式。
一、懒汉模式(线程安全)
我们之前介绍的懒汉模式是线程不安全的,因为在单例模式中只存在一个实例,但是之前的懒汉模式在多线程中,唯一的一个实例容易被覆盖,导致信息错误。所以我们应该添加锁,使其成为线程安全的。
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
synchronized就是锁。
这种写法能够在多线程中很好的工作,但是每次调用getInstance方法时都需要进行同步,造成不必要的同步开销,而且大部分时候我们是用不到同步的,所以不建议用这种模式。