可重入锁的问题

可重入锁的问题

老师提及到的可重入锁可以避免死锁,不明白他怎么避免,老师也没有详细说

但是我认为啊,死锁的四个必要条件其中之一就是资源的请求保持条件,你这个拿着一个synchronized的同时又去申请另一个synchronized不正是请求保持吗,并且synchronized还满足了互斥和不可剥夺,只剩下一个环路等待就看你怎么安排资源的申请顺序了,那这样不是更能导致死锁吗

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

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小脸 2021-07-17 09:49:28

同学你好,为什么可重入锁可以避免死锁?这里做个假设:假设这个锁是不可重入的,那么不可重入的情况下,比如说我手上拿了一个synchronized的锁,我再想去申请这个锁,这个时候直接就死锁了,因为是不可重入的,所以手上持有这把锁的时候,再想申请的时候由于它不可重入,所以申请不到,不但申请不到,因为它还无法释放,且正在申请,所以没有办法同时去释放。所以申请又申请不到,释放又释放不了,直接就死锁了

但是假设我们是可重入锁,那么在拿到这个锁的同时,再去申请自己这把锁其实是可以申请到的,那么可以申请到,所以就没有造成死锁,这个就是可重入锁的一个优点,就是避免了死锁,假设锁不可重入,那么这种情况下就直接造成死锁了
如果老师的回答没有解决同学的疑问,可以再次提问

祝学习愉快~

狂野男孩_程序猴 2021-07-16 17:21:25

emm你结合这个博主的示例跟讲解理解一下?讲的挺详细

https://www.cnblogs.com/noodleprince/p/8722356.htm

帮助到你记得给我一个采纳


  • 提问者 qq_精慕门6417434 #1

    不好意思,不是我问的那个,他所偏向解释的死锁只是重入过程中,不能同时持有多个锁却需要得到多个锁导致的死锁;而我偏向的疑惑是资源竞争中导致的死锁

    2021-07-16 17:33:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师