解決哲學家就餐問題之同時拿起兩隻筷子才允許吃飯

2021-09-01 20:58:38 字數 756 閱讀 1372

標紅的地方便是演算法的關鍵思想,理解了就相當簡單了。不理解的可以根據注釋理解一下。

1.同時拿起兩隻筷子才允許吃飯。

package tset;

class philosopher extends thread

public void run()

}private void thinking() catch (interruptedexception e)

}private void eating() catch (interruptedexception e) }}

class chopsticsks ;        //初始化筷子為未使用

public synchronized void take() catch (interruptedexception e)

}system.out.println("哲學家" + id + "拿起兩隻筷子:"+id+"、"+(id + 1) % 5);

used[id] = true;              //將筷子設為已使用

used[(id + 1) % 5] = true;

}@suppresswarnings("deprecation")

public synchronized void put()

}public class second

}結果截圖:

哲學家就餐問題

本文是哲學家就餐問題在 linux 上的程式實現,與windows 平台的實現類似,程式上稍有不同。philosopherdining.cpp include include include include include include rasutil.h using namespace std ...

哲學家就餐問題

pragma once include include include include include include include include include include include include include stdafx.h handle chopstick 5 room l...

哲學家就餐問題

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