位置: IT常识 - 正文
推荐整理分享什么是死锁?如何避免死锁?(什么是死锁,死锁的四个必要条件),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:什么是死锁?用什么方法实现死锁的避免?,什么是死锁,死锁的四个必要条件,什么是死锁?死锁的必要条件是什么?,什么叫死锁?,什么是死锁举例说明,什么叫死锁?,什么是死锁产生的原因,什么叫死锁?,内容如对您有帮助,希望把文章链接给更多的朋友!
线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。
我和同学都打扫卫生,我拿着扫帚等他的簸箕,他拿着簸箕等我的扫帚
产生条件互斥条件:同一时刻一线程只能占用一个资源。
同一时刻,我拿着扫帚,他拿着簸箕。
请求与保持:一个线程因请求资源而阻塞时,对已获得的资源保持不放。
我在等他的簸箕,但我不会让出我的扫帚
不可剥夺:已获得的资源在为使用完时,其他线程不能强行剥夺。
我拿着扫帚,但是我不能去强抢他拿的簸箕
循环等待
我拿着扫帚等他的簸箕,他拿着簸箕等我的扫帚,形成闭环
如何避免打破产生条件即可
破坏 互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题破坏 请求与保持条件:一次申请所有需要的资源破坏 不可剥夺条件:如果线程已占用部分资源,且他还要申请其他资源,如果申请不到,就主动释放它自己占有的资源破坏 循环等待条件:按照顺序申请资源,释放资源则逆序参考:JavaGuide
上一篇:php中__get如何获取成员属性(php __get())
下一篇:phpcms附件上传不成功怎么办(上传附件不成功怎么回事)
友情链接: 武汉网站建设