单例模式 synchronized 同步关键字 防止多线程情况下单例模式重复创建问题,每次同步影响性能
懒汉模式把getInstance()方法变成同步方法
private static LazySingleton instance=null;
public static synchronized LazySingleton getInstance(){
if(instance==null){
instance=new LazySingleton ();
}
return instance;
}
懒汉模式使用双重锁,这样只有在第一次创建实例的时候,同步锁才会发挥作用。
volatile关键词确保返回的单例对象完整可用性
public class Singleton{
private volatile static Singleton singleton;
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null){
synchronized(Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}