懒汉单例模式在多线程下的应用

来源:互联网 发布:液压系统仿真软件 编辑:程序博客网 时间:2024/06/06 18:49

1.懒汉单例模式,是在使用时判断对象是否存在,因此,是非线程安全的,需要通过添加synchronized对创建对象部分加锁;

如何加锁:

              1.首先想到的是在getInstance方法加锁;

      如:  public static 类名 synchronized getInstance(){

 if(null  == obj ){

obj = new 类名();

}

return obj;

}

注: 该方法可行,可以保证所创建对象唯一,但是有可能导致线程阻塞;

2.使用synchronized代码块

如:public static 类名 getInstance(){

//双重判断对象 是否存在,外出用于判断是否调用线程进入阻塞状态,提高效率

if(null  == obj){

synchronized(类名.class){

  if(null  == obj ){

obj = new 类名();

}

}

}

return obj;

}