欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

单例模式懒汉模式线程安全问题解决方法

程序员文章站 2022-06-08 22:05:08
...
饿汉式会有效率的问题,即加载类时就会创建那个静态对象,会占据一定内存,如果你的类不大,第一种方法是好的.
如楼上所说,懒汉式会有线程安全的问题.可以通过 双重检查加锁 方法来解决.你可以去搜搜.百度上也有.

解决方法是:双重检查加锁机制实现

public class Singleton{
   private volatile static Singleton uniqueInstance;
   private Singleton(){}
   public static Singleton getInstance(){
       //先检查实例是否存在,如果不存在才进入下面的同步块
      if(uniqueInstance==null)
      {
         //同步快,线程安全的创建实例
         synchronized(Singleton.class){
            if(uniqueInstance==null){
               //再次检查实例是否存在,如果不存在,才真正的创建实例
               uniqueInstance=new Singleton();
            }
         }
      }
      return uniqueInstance;
   }
}