首页IT科技什么是死锁?请给出预防死锁的若干方法(什么是死锁?如何避免死锁?)

什么是死锁?请给出预防死锁的若干方法(什么是死锁?如何避免死锁?)

时间2025-09-19 17:30:16分类IT科技浏览5334
导读:概念...

概念

线程死锁描述的是这样一种情况:多个线程同时被阻塞                ,它们中的一个或者全部都在等待某个资源被释放                。由于线程被无限期地阻塞                       ,因此程序不可能正常终止                       。

我和同学都打扫卫生      ,我拿着扫帚等他的簸箕            ,他拿着簸箕等我的扫帚

产生条件

互斥条件:同一时刻一线程只能占用一个资源      。

同一时刻                        ,我拿着扫帚          ,他拿着簸箕            。

请求与保持:一个线程因请求资源而阻塞时        ,对已获得的资源保持不放                        。

我在等他的簸箕                        ,但我不会让出我的扫帚

不可剥夺:已获得的资源在为使用完时              ,其他线程不能强行剥夺          。

我拿着扫帚    ,但是我不能去强抢他拿的簸箕

循环等待

我拿着扫帚等他的簸箕                        ,他拿着簸箕等我的扫帚                  ,形成闭环

如何避免

打破产生条件即可

破坏 互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题 破坏 请求与保持条件:一次申请所有需要的资源 破坏 不可剥夺条件:如果线程已占用部分资源                    ,且他还要申请其他资源                      ,如果申请不到   ,就主动释放它自己占有的资源 破坏 循环等待条件:按照顺序申请资源                ,释放资源则逆序

参考:JavaGuide

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网创产品(网创什么项目来钱快-总结六种常见网创项目)