设计模式之单例模式
class Singleton{
private static Singletion instance;
private Singletion();
public Singletion getInstance(){
if(instance==null){
synchronsized(Singletion.Class){
//为了在给当前对象上锁的过程中其他线程new对象
//所以在判断一次
if(instance==null)
instance=new Singletion();
}
}
return instance;
}
}
双检锁,又叫双重校验锁(DCL Double Check Lock),综合了懒汉式和饿汉式两者的优缺点整合而成。
看上面代码实现中,特点是在synchronized关键字内外都加了一层 if 条件
判断,这样既保证了线程安全,又比直接上锁提高了执行效率,还节省了内存
空间。