区块链技术博客
www.b2bchain.cn

Java多线程 哲学家就餐死锁问题四种解决方案

这篇文章主要介绍了Java多线程 哲学家就餐死锁问题四种解决方案的讲解,通过具体代码实例进行17852 讲解,并且分析了Java多线程 哲学家就餐死锁问题四种解决方案的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=17852

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

      • 哲学家就餐死锁问题四种解决方案
        • 服务员检查 (避免策略)
      • 改变一个哲学家拿筷子的顺序 (避免策略 代码演示)
        • 餐票 (避免策略)
        • 领导调节策略 (检测与恢复策略)

哲学家就餐死锁问题四种解决方案

此文中演示了哲学家就餐问题的死锁代码demo . 下面提供四种解决方案
https://javaweixin6.blog.csdn.net/article/details/108541931

服务员检查 (避免策略)

在哲学家去拿筷子的时候, 由服务员去判断是否会造成五个人都拿着左边筷子的情况, 如果会, 那么服务员就让某个哲学家等一会再拿左边的筷子, 避免了死锁的情况

改变一个哲学家拿筷子的顺序 (避免策略 代码演示)

此策略没有额外的服务员 . 而是 某一个哲学家不是从左边拿筷子, 是从右边拿筷子, 这样就避免了死锁的环路.
例如把此文中的代码
https://javaweixin6.blog.csdn.net/article/details/108541931

做如下的修改, 第一个线程是先拿右边的筷子, 第二个线程先拿左边的筷子

  if (i == 0) {                 philosophers[i] = new Philosopher(rightChopstick, leftChopstick);             } else {                 //初始化哲学家                 philosophers[i] = new Philosopher(leftChopstick, rightChopstick);             } 

Java多线程 哲学家就餐死锁问题四种解决方案
再次运行程序, 可以看到没有发生死锁了.
Java多线程 哲学家就餐死锁问题四种解决方案

餐票 (避免策略)

餐票方案是指, 如果有五个哲学家 , 那么只给出四个餐票, 总会有一个哲学家是吃不上饭的, 这样也就避免了死锁. 当某个哲学家吃完饭后, 再把餐票还回去.

领导调节策略 (检测与恢复策略)

领导调节策略指的是, 有领导定期的巡视, 如果发现出现了死锁, 那么就会剥夺某一个哲学家手中的筷子 , 释放锁资源, 破坏死锁的四个条件中的不剥夺条件.

本文转自互联网,侵权联系删除Java多线程 哲学家就餐死锁问题四种解决方案

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Java多线程 哲学家就餐死锁问题四种解决方案
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们