快乐女友观察博主62V-5G:自拍视频教你如何让女友开心
在这个充满创意和快节奏的网络世界里...
2024-09-05
让多线程代码安全运行的方法是让所有的方法都同步。
效率低下。
如果每个方法都同步,大多数线程会频繁阻塞,使程序失去了并发的意义。-
当使用多把锁时(Java中每一个对象都有自己的内置锁),线程之间可能发生死锁。

代码很简单,Philosopher类只有三个属性,左右筷子和random:

Philosopher类
下面是具体的逻辑代码:

测试该代码:

测试过五个哲学家实例,最长时间可以运行一周,直到某个时刻突然都停了下来。
如果所有哲学家同时决定进餐,都拿起左手边的筷子,那么就无法进行下去——所有人都持有一只筷子并等待右手边的人放下筷子。这时死锁就出现了。
一个线程需要多把锁时,就需要考虑死锁的可能性。
总是按照一个全局的固定的顺序获取多把锁。

不是按左右手的顺序拿筷子,而是按照筷子编号获取锁(不关心编号的具体规则,只要保证编号是全局唯一且有序的)。
如果获取锁的代码写得比较集中,就有利于维护这个全局顺序。而对于规模较大的程序,使用锁的地方比较零散,各处都遵守这个顺序就变得不太实际。

适用于所有Java对象,不用为锁对象专门定义并维护一个顺序。
但对象的散列值并不能保证唯一性(对象的散列值可能重复)。如果不是迫不得已,不要使用这个技巧。
以上内容就是为大家推荐的如何避免死锁(哲学家就餐问题如何避免死锁)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:如何避免死锁(哲学家就餐问题如何避免死锁)
本文地址:https://www.xiaoyin02.com/zrkx/67242.html
相关文章
【视频资源介绍】训狗师音音套路 辱骂 [3v+972MB][百度盘 永久有效] 在这个套路直播潮流的时代...
2023-11-29
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)