
设计模式
高行行
这个作者很懒,什么都没留下…
展开
-
单例设计模式双重检查的作用
第二个 if 判断是为了避免生成多个对象实例。比如在未创建实例的情况下,A线程和B线程都通过了第一次校验,这时如果通过竞争B线程拿到了锁就会执行一次 new 操作,生成一个实例,然后 B 执行完了 A 就会拿到资源的锁,如果没有第二次判断的话,这时A线程也会执行一次 new 操作,这里就出现了第二个类实例,违背了单例原则。第一个 if 判断是为了减少性能开销,不用走 synchronized 代码,避免多余的加锁操作,以及锁的等待和竞争。为什么要进行两次非空校验?先看双重校验锁的写法。原创 2024-06-18 22:05:15 · 461 阅读 · 0 评论 -
Java 单例模式从入门到入坟(全解全析)
代码地址:https://github.com/gaohanghang/leetcode一,什么是单例模式二,介绍这两个可以先不看,都是概念性的东西,直接看后面的就行,当然看了也可以 ????单例模式为什么那么常问?是因为这个题目可以问到很多知识点。比如线程安全、类加载机制、synchronized 的原理、volatile 的原理、指令重排与内存屏障、枚举的实现、反射与单例模式、序列化如何破坏单例、CAS、CAS 的 ABA 问题、Threadlocal 等知识。一般情况下,只需要从单例开始原创 2020-08-28 09:42:41 · 535 阅读 · 0 评论