-
单例模式的“饿汉模式” 因为getInstance()方式没有用同步锁,是线程不安全的。
public static MyObject getInstance() {
try {
// 延迟加载
if(myObject != null) {
// 已经有了
}else {
//模拟在创建对象之前做一些准备性的工作
Thread.sleep(3000);
myObject = new MyObject();
}
} catch (InterruptedException e) {
e.printStackTrace();
}return myObject;
}
解决方法:
a, synchronized 可以,但是效率太低
b, 同步代码块 可以。和同步方法一样, 效率低
c, 单例的“懒汉模式” 使用DCL双检查锁机制 -
序列化与反序列化的单例模式实现
-
使用static代码块实现单例模式
-
使用enum枚举数据类型实现单例模式
第六章:单例模式和多线程
最新推荐文章于 2022-10-11 13:50:48 发布