参考资料:
Java中,synchronized关键字和Lock的实现类都是悲观锁;AtomicInteger是乐观锁
- 悲观锁适合写操作多的场景,先加锁可以保证写操作时数据正确。
- 乐观锁适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升。
原文:https://blog.youkuaiyun.com/MeituanTech/article/details/84138163
volatile实现可见性的底层原理
通过 MESI协议,早期是LOCK#锁的方式实现的,
但这种方式开销太大,所以Intel开发了缓存一致性协议,通过嗅探(snooping)实现。
https://blog.youkuaiyun.com/nch_ren/article/details/78924808
https://blog.youkuaiyun.com/yanshuanche3765/article/details/78405872
死锁:
我觉得就像两个人过一个独木桥,谁也不愿意让谁,就那样一种耗着!
参考:https://www.cnblogs.com/bopo/p/9228834.html