经典回顾:哲学家进餐问题(The Dinning Philosophers Problem)
2006-04-05 13:40
656 查看
该问题涉及到五个哲学家,他们交替地进行思考和进餐。他们分别坐在位于一个圆形餐桌周围的五把椅子上,圆桌中央是一碗米饭,餐桌上共有五根筷子,分别摆放在每两个相邻座位的中间。
当哲学家思考时,他不与其他人交谈。当哲学家饥饿时,他将拿起和他相邻的两根筷子进行进餐,但他很可能仅拿到一根,此时旁边的另一根正在他邻居的手中。只有他同时拿到两根筷子时他才能开始进餐。完成进餐后,他将两根筷子分别放回原位,然后再次开始思考。
下面是哲学家进餐问题的Java实现的代码,涉及到线程:
1package threadDemo;
5
6
27
28
71
72
102
103
运行结果:
哲学家 1 正在进餐
哲学家 3 正在进餐
哲学家等待另一根筷子
哲学家 3 正在思考
哲学家等待另一根筷子
哲学家 5 正在进餐
哲学家等待另一根筷子
哲学家 2 正在进餐
哲学家 1 正在思考
哲学家 5 正在思考
哲学家 2 正在思考
哲学家等待另一根筷子
...............
当哲学家思考时,他不与其他人交谈。当哲学家饥饿时,他将拿起和他相邻的两根筷子进行进餐,但他很可能仅拿到一根,此时旁边的另一根正在他邻居的手中。只有他同时拿到两根筷子时他才能开始进餐。完成进餐后,他将两根筷子分别放回原位,然后再次开始思考。
下面是哲学家进餐问题的Java实现的代码,涉及到线程:
1package threadDemo;
5
6
27
28
71
72
102
103
运行结果:
哲学家 1 正在进餐
哲学家 3 正在进餐
哲学家等待另一根筷子
哲学家 3 正在思考
哲学家等待另一根筷子
哲学家 5 正在进餐
哲学家等待另一根筷子
哲学家 2 正在进餐
哲学家 1 正在思考
哲学家 5 正在思考
哲学家 2 正在思考
哲学家等待另一根筷子
...............
相关文章推荐
- 操作系统:经典进程同步问题(2)哲学家进餐问题
- 经典IPC问题(哲学家进餐)
- 哲学家进餐问题(dining philosopher problem)
- 【经典问题】现代操作系统经典问题回顾(哲学家就餐问题C#实现)
- The problem of maze(经典迷宫问题) DFS版
- 经典同步问题之哲学家进餐
- 线程死锁与哲学家问题------dining philosophers problem
- Uva 101 the block problem 木块问题(算法竞赛经典入门)STL vector
- 操作系统学习笔记(13) 互斥与同步的经典问题 -哲学家进餐问题
- C# 多线程编程 经典模型 哲学家进餐问题
- Problem B. Investing at the Market 问题B 市场投资 分析 解决办法
- 【经典操作系统问题】哲学家就餐问题分析
- HDU2680-Choose the best route(经典最短路问题dijkstra算法)
- 停机问题--The Halting Problem
- HDU 4115(Eliminate the Conflict-石头剪刀布,经典2sat问题)
- HDOJ 2058 The sum problem(数学问题)
- 漫谈线程与锁:死磕哲学家进餐问题
- Avalon CTP : 黑窗问题 the black window problem
- Linux经典问题—五哲学家就餐问题
- HD 2438 Turn the corner (三分&&计算几何&&经典问题)