请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

轻量级锁

老师说第二个线程来竞争锁的时候锁就成了轻量级锁,这个说法不严谨吧?第二个线程如果只接竞争成功,这个时候锁应该还是偏向锁,当它竞争失败的时候锁才会升级成轻量级锁

正在回答 回答被采纳积分+3

1回答

提问者 慕虎7161837 2020-11-18 11:09:30

老师,我是这么理解的,您看是否有误。假设有两个线程, A先获取到的就是偏向锁,那么B就会发生自旋等待锁的获取。当B自旋获取到锁时,会检查A是否还存活,如果不,则锁被重置为无锁状态,此时B竞争到锁,将其设置为偏向锁。如果存活,则锁升级为轻量级锁。当B自旋失败没获取到锁时,锁就自动升级为重量级锁,竞争重量级锁时所有的线程都不会发生自旋。并且在以后的竞争中,这把锁都只会是重量级锁的状态。除非发生GC,把锁当垃圾回收。第二种场景,如果有N个线程同时竞争锁,其中只有一个自旋失败没有获取到锁,那么锁也会升级成重量级锁。以上这些理解是否有不准确的地方,有的话,麻烦老师指出纠正一下,谢谢!!

0 回复 有任何疑惑可以回复我~
  • 翔仔 #1
    同学好,这么理解是没问题的哈
    回复 有任何疑惑可以回复我~ 2020-11-18 23:40:11
  • A先获取偏向锁的话,B进来还会自旋等待锁的获取?
    不是看线程id不一致就直接升级了吗?
    回复 有任何疑惑可以回复我~ 2021-08-01 18:31:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信