什么是死锁?请给出预防死锁的若干方法(什么是死锁?如何避免死锁?)
导读:概念...
概念
线程死锁描述的是这样一种情况:多个线程同时被阻塞 ,它们中的一个或者全部都在等待某个资源被释放 。由于线程被无限期地阻塞 ,因此程序不可能正常终止 。
我和同学都打扫卫生 ,我拿着扫帚等他的簸箕 ,他拿着簸箕等我的扫帚
产生条件
互斥条件:同一时刻一线程只能占用一个资源 。
同一时刻 ,我拿着扫帚 ,他拿着簸箕 。
请求与保持:一个线程因请求资源而阻塞时 ,对已获得的资源保持不放 。
我在等他的簸箕 ,但我不会让出我的扫帚
不可剥夺:已获得的资源在为使用完时 ,其他线程不能强行剥夺 。
我拿着扫帚 ,但是我不能去强抢他拿的簸箕
循环等待
我拿着扫帚等他的簸箕 ,他拿着簸箕等我的扫帚 ,形成闭环
如何避免
打破产生条件即可
破坏 互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题 破坏 请求与保持条件:一次申请所有需要的资源 破坏 不可剥夺条件:如果线程已占用部分资源 ,且他还要申请其他资源 ,如果申请不到,就主动释放它自己占有的资源 破坏 循环等待条件:按照顺序申请资源 ,释放资源则逆序参考:JavaGuide
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!