线程安全之单例模式之懒汉模式

在单例模式中的懒汉模式存在一定的线程安全,通过前面的线程安全处理可以应用到此处

public class BankTest {
    public static void main(String[] args) {
        Bank bank = Bank.getInstance();
        System.out.println(bank.getClass());
    }
}

class Bank{
    private Bank(){}
    private static  Bank instance = null;

    public static Bank getInstance() {
        //方式一:效率会比较低,因为所有线程都会进入同步锁判断再返回
       /* synchronized (Bank.class) {
            if (instance == null) {
                instance = new Bank();
            }
            return instance;
        }*/
       //方式二:效率稍高
        if (instance == null){  //使用双重检查,好处在于后面线程不需要进入线程同步,直接判断instance提升效率
            synchronized (Bank.class){  //同步锁在此处
                if (instance == null){
                    instance = new Bank();
                }
            }
        }
        return instance;
    }
}

你可能感兴趣的:(Java高级,单例模式,java,开发语言)