(Java高级教程)第二章Java多线程常见面试题-第一节:锁策略、CAS和Synchronized原理

本文详细讲解Java多线程中的锁策略,包括乐观锁与悲观锁、读写锁、轻量级锁与重量级锁、自旋锁、公平锁与非公平锁、可重入锁。同时深入探讨了CAS的工作原理,如ABA问题及其解决方案。最后剖析了Synchronized的锁升级机制,包括无锁、偏向锁、轻量级锁和重量级锁的状态转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:常见的锁策略

synchronized是什么锁:总的来说,synchronized是一把自适应锁,它既是乐观锁(基于自旋锁实现)也是悲观锁(基于挂起等待实现);即是轻量级锁也是重量级锁;不是读写锁,是普通互斥锁;是非公平锁;是可重入锁

(1)乐观锁与悲观锁

乐观锁:预测锁冲突的概率不高,因此所做工作可以简单一些

悲观锁:预测锁冲突的概率较高,因此所做工作就要负责一些

举个例子:同学A和同学B想请教老师问题

  • 乐观锁:同学A认为“老师是比较闲的,现在去问问题,大概率有空解答”。因此同学A直接就会来找老师(没有加锁,直接访问资源)。如果老师确实比较闲,那么问题就直接解决了;如果老师比较忙
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江湖

创作不易,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值