双重检查锁来实现单例(java)
如何防止单例类有多个实例。在整个应用生命周期中,要保证只有一个单例类的实例被创建,双重检查锁(Double checked locking of Singleton)是一种实现方法。
- public class Singleton{
- private static Singleton instance = null;
- private Singleton(){}
- public static Singleton getInstance(){
- if(instance == null){ //第一次检查
- //双重检查加锁,只有在第一次实例化时,才启用同步机制,提高了性能。
- synchronized(Singleton.Class){
- if(instance == null){ //第二次检查
- instance = new Singleton();
- }
- }
- }
- return instance;
- }
- }