设计模式好⽐象棋中的"棋谱".红⽅当头炮,⿊⽅⻢来跳.针对红⽅的⼀些⾛法,⿊⽅应招的时候有⼀ 些固定的套路.按照套路来⾛局势就不会吃亏. 软件开发中也有很多常⻅的"问题场景".针对这些问题场景....Singleton(){}
//后续再别的代码中,尝试new Singleton,就会直接编译报错
}
对于饿汉来说,getInstance 直接返回instance实例, 这个本质上就是"读操作...".所以即使是多个线程同时读取一个变量,线程也是安全的
3.懒汉模式
class SingletonLazy {
private static SingletonLazy instance...⽽懒汉模式的线程不安全只是发⽣在⾸次创建实例的时候. 因此后续使⽤的时候, 不必再进⾏加锁了. 所以这个时候可以在家一个 if 判定是否要加锁....,而不是直接优化到寄存器 / 缓存中
2.禁止指令重排序, volatile 修饰的变量的读写操作相关指令,不能被重排序的
所以最终代码为下
class SingletonLazy {
private