哲學家進餐問題——Java語言實現 哲學家進餐問題是一個多線程運用的經典例子,涉及到線程同步/互斥,臨界區訪問問題以及一個避免死鎖的解決方法。 有五個哲學家繞著圓桌坐,每個哲學家面前有一盤面,兩人之間有一支筷子,這樣每個哲學家左右各有一支筷子。 哲學家有2個狀態,思考或者拿起筷子吃飯。如果哲學家拿到一只筷子,不能吃飯,直到拿到2只才能吃飯,并且一次只能拿起身邊的一支筷子。一旦拿起便不會放下筷子直到把飯吃完,此時才把這雙筷子放回原處。 如果,很不幸地,每個哲學家拿起他或她左邊的筷子,那么就沒有人可以吃到飯了。這就會造成死鎖了。。這是需要堅決杜絕的,正如操作系統的死鎖問題。