
回复
饿汉式缺点: 可能会浪费内存 线程安全
懒汉式缺点:只有在单线程下才有效 多线程下会破坏单例模式 线程不安全
饿汉是线程安全的,我们在这不讨论他,主角是我们的懒汉式!!
懒汉式线程不安全的原因:
线程不安全的原因:
假设有两个线程A和B A线程到达(1)处时判断lazyMan对象为null此时cpu的执行权被线程B抢去
但A还没有对lazyMan进行实例化
B读取lazyMan对象的状态仍然是null 线程AB都会进入if中通过new 创建两个不同的对象
解决方案:
线程不安全 就给它加锁
还可以用反射暴力破解
都会使得懒汉式的单例被破坏 创建多个对象!
##枚举也是线程安全的 即便使用反射也不能破坏其单例模式!!!
枚举的不能破坏单例的方法这里不提.
有关枚举的单例请移步下一篇博客!
作者:____小明同学i
来源:CSDN