懒汉式(线程安全,同步代码块儿)
代码演示
// 懒汉式 (线程安全_ 同步放法_)
class Singleton{private static Singleton instance;private Singleton() {}// 提供一个静态的公有方法 加入了同步处理的代码// 解决线程安全问题// 即懒汉式// 我们在这里加一个关键字 synchronizedpublic static Singleton getInstance() {if (instance == null) {synchronized(Singleton.class){instance = new Singleton();}}return instance;}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X10OUu0Q-1613785230625)(./img/mm/meizi56.jpg)]
优缺点说明
-
这总方式,本意是想对于第四种实现方式的改进,因为前面同步方法效率太低,
改为同步产生实例化的的代码块 -
但是这种同步并不能起到线程同步的作用,跟第三种实现方式遇到的情形一致,假如一个线程进入了if(singleton == null)判断语句块儿,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例
-
结论:在实际开发中,不能使用这种方式(没多大卵用)
更多:http://victorfengming.gitee.io/design_pattern/