多執行緒之哲學家就餐問題

2022-09-19 23:45:09 字數 1483 閱讀 3910

哲學家就餐問題是2023年由dijkstra提出的一種執行緒同步的問題。

問題描述:一圓桌前坐著5位哲學家,兩個人中間有乙隻筷子,桌子**有麵條。

哲學家思考問題,當餓了的時候拿起左右兩隻筷子吃飯,必須拿到兩隻筷子才能吃飯。

上述問題會產生死鎖的情況,當5個哲學家都拿起自己左手邊的筷子,準備拿右手邊的筷子時產生死鎖現象。

問題解決

1.其中乙個人改變拿筷子的順序

people物件:

package

com.ldp.demo02;

import

com.common.mythreadutil;

import

lombok.extern.slf4j.slf4j;

/***

@author

姿勢帝-

* @address

* @wechat 851298348

* @create 02/01 9:31

* @description */

@slf4j

public

class people extends

thread

@override

public

void

run()

}/*** 吃飯功能

* 有嚴重的死鎖問題**

@param

leftchopsticks

* @param

rightchopsticks

*/public

void

eat(string leftchopsticks, string rightchopsticks) }}

}

測試**:

package

com.ldp.demo01;

import

com.ldp.demo02.people;

/***

@author

姿勢帝-

* @address

* @wechat 851298348

* @create 02/01 9:14

* @description * 哲學家就餐問題:

* 哲學家就餐問題是2023年由dijkstra提出的一種執行緒同步的問題。

* * 問題描述:一圓桌前坐著5位哲學家,兩個人中間有乙隻筷子,桌子**有麵條。

* 哲學家思考問題,當餓了的時候拿起左右兩隻筷子吃飯,必須拿到兩隻筷子才能吃飯。

* 上述問題會產生死鎖的情況,當5個哲學家都拿起自己左手邊的筷子,準備拿右手邊的筷子時產生死鎖現象。

* 問題解決

* 1.其中乙個人改變拿筷子的順序

* */

public

class

test10eat

}

多執行緒之哲學家就餐問題

該問題的描述是 五個哲學家共用一張圓桌,分別坐在周圍的5張椅子上,在圓桌上有5個碗和5只筷子,他們的生活方式是交替進行思考和進餐,平時,乙個哲學家進行思考和飢餓,平時,乙個哲學家進行思考,飢餓的時候便試圖取用其作用最靠近的筷子,只有在他拿到兩至筷子時才能進餐,進餐完畢,放下筷子進行思考 現在呢 我們...

多執行緒 哲學家就餐問題

1 當哲學家的左右筷子均是可用的時候才能就餐,否則等待,很容易理解,一次最多能有兩個人同時就餐 public class philosophereating 當前執行緒組活動執行緒數 while thread.activecount 1 catch interruptedexception ex 哲...

多執行緒 哲學家就餐問題

哲學家就餐問題可以這樣表述,假設有五位哲學家圍坐在一張圓形餐桌旁,做以下兩件事情之一 吃飯,或者思考。吃東西的時候,他們就停止思考,思考的時候也停止吃東西。餐桌中間有一大碗義大利面,每兩個哲學家之間有乙隻餐叉。因為用乙隻餐叉很難吃到義大利面,所以假設哲學家必須用兩隻餐叉吃東西。他們只能使用自己左右手...