package com;

/**
 * @author 冀帅
 * @date 2020/8/3-10:32
 * 使用同步机制将单例模式的懒汉式改写为线程安全的
 */
public class BankTest {
}
//懒汉式
class  Bank{
    private  Bank(){}
    private  static  Bank instance = null;
    public  static   Bank getInstance(){
        //方式一:效率低
//        synchronized (Bank.class) {
//            if (instance == null){
//                instance = new Bank();//后来的线程进来判断为fales,直接return。不会创建新的instance
//
//            }
//            return  instance;
//        }
        //方式二:
        if (instance == null){//互相抢锁,没抢到的判断 instance不为null ,就不会进入同步代码块,会直接拿到instance,效率更高
            synchronized (Bank.class) {
                if (instance == null){
                    instance = new Bank();//后来的线程进来判断为fales,直接return。不会创建新的instance
                }
            }
        }
        return  instance;
     }
    }