世界微尘里,吾宁爱与憎
单例模式的线程安全问题
单例模式的线程安全问题

单例模式的线程安全问题

对于下面这个类

public class Bank(){
   private Bank();
   private static Bank instance = null;
   public static Bank getInstance(){
       if(instance == null){
           instance = new Bank();
      }
       return instance;
  }
}
//懒汉式单例模式

这是一个懒汉式的单例模式,懒汉式的单例模式相对于饿汉式单例模式有一个问题,就是懒汉式的单例模式需要考虑线程的安全问题

比如,如果两个线程同时进入getInstance方法,instance就会被赋值两次,这就是线程不安全的

所以,需要使用同步代码块或者同步方法

public class Bank(){
   private Bank();
   private static Bank instance = null;
   public static synchronized Bank getInstance(){
       if(instance == null){
           instance = new Bank();
      }
       return instance;
  }
}
//懒汉式单例模式

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注