- 博客(2)
- 收藏
- 关注
原创 面试题:volatile 可以保证原子性么?
尽管 `count` 被声明为 `volatile`,可以保证一个线程对 `count` 的修改对其他线程是可见的,但是递增操作 `count++` 并不是原子的。在这个例子中,尽管 `count` 被声明为 `volatile`,但并不能保证递增操作的原子性,从而导致了一个线程的递增操作可能被另一个线程的递增操作所覆盖,最终导致计数器的值小于期望的值。要解决这种情况,可以使用 `synchronized` 关键字或 `AtomicInteger` 等原子类,以确保递增操作的原子性。
2023-12-06 16:07:20
288
1
原创 面试题:单例模式了解吗?来给我手写一下!给我解释一下双重检验锁方式实现单例模式的原理呗!
在某些情况下,JVM 可能会对指令进行重排序,导致在同步块外的线程获取到一个尚未初始化完成的实例。3. **第二次检验(内部 if 语句):** 在同步块内,再次检验实例是否为 null。2. **同步块(synchronized):** 如果实例不存在(即第一次检验失败),则进入同步块。1. **第一次检验(外部 if 语句):** 如果实例已经存在,直接返回该实例。4. **实例创建:** 如果在同步块内检验发现实例仍然为 null,那么创建一个新的实例。**双重检验锁方式的实现原理:**
2023-12-06 15:55:30
84
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人