采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师说第二个线程来竞争锁的时候锁就成了轻量级锁,这个说法不严谨吧?第二个线程如果只接竞争成功,这个时候锁应该还是偏向锁,当它竞争失败的时候锁才会升级成轻量级锁
老师,我是这么理解的,您看是否有误。假设有两个线程, A先获取到的就是偏向锁,那么B就会发生自旋等待锁的获取。当B自旋获取到锁时,会检查A是否还存活,如果不,则锁被重置为无锁状态,此时B竞争到锁,将其设置为偏向锁。如果存活,则锁升级为轻量级锁。当B自旋失败没获取到锁时,锁就自动升级为重量级锁,竞争重量级锁时所有的线程都不会发生自旋。并且在以后的竞争中,这把锁都只会是重量级锁的状态。除非发生GC,把锁当垃圾回收。第二种场景,如果有N个线程同时竞争锁,其中只有一个自旋失败没有获取到锁,那么锁也会升级成重量级锁。以上这些理解是否有不准确的地方,有的话,麻烦老师指出纠正一下,谢谢!!
同学好,这么理解是没问题的哈
A先获取偏向锁的话,B进来还会自旋等待锁的获取? 不是看线程id不一致就直接升级了吗?
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.7k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14