一、 双重检查单例
双重检查应用实例方式:线程安全、延迟加载、效率较高。
volatile变量具有synchronized的可见性特性,但是不具备原子特性。这既是说线程能够自动发现volatile变量的最新值,这种实现方式既可以实现线程的创建实例,而又不会对性能造成太大的影响,它只是第一次创建实例的时候同步,以后就不需要同步,从而加快了运行速度。
二、实例
public class LazySingleton{
private static volatile LazySingleton instance;
private LazySingleton(){
}
public static LazySingleton getInstance(){
if(instance == null){
synchronized(LazySingleton.class){
if(instance == null){
instance = new LazySingleton();
}
}
}
return instance;
}
}