在单例模式中的懒汉模式存在一定的线程安全,通过前面的线程安全处理可以应用到此处
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;
}
}