两种单例模式总结–(饿汉式、懒汉式)
一、饿汉式单例模式
- 代码实现:
public class Singleton{
private static final Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance() {
return singleton;
}
}
二、懒汉式单例模式
- 代码实现:
public class Singleton {
private static Singleton singleton;
private Singleton(){}
public static Singleton getInstance() {
if (singleton == null) {
// 线程A和线程B同时看到singleton = null,如果不为null,则直接返回singleton
synchronized(Singleton.class) {
// 线程A或线程B获得该锁进行初始化
if (singleton == null) {
// 其中一个线程进入该分支,另外一个线程则不会进入该分支
singleton = new Singleton();
}
}
}
return singleton;
}
}