資源簡介
利用JAVA解決哲學家進餐的經(jīng)典問題。
很簡單的小程序。
代碼片段和文件信息
class?ChopStick?{????//筷子類
boolean?available;
????ChopStick()?{
????????available=true;??//可以拿起
???}
????public?synchronized?void?takeup()?{??//拿起動作
????????while(!available)?{
????????????try?{
????????????????wait();?
????????????????System.out.println(“哲學家等待另一根筷子“);??
????????????}?catch(InterruptedException?e)?{?}
?????}
????????available=false;
????}
????
????public?synchronized?void?putdown()?{??//放下動作
????????available=true;
????????notify();
????}
}
class?Philosopher?extends?Thread?{???//哲學家類
????ChopStick?left?right;??
????int?philo_num;??//哲學家編號
?????
?????Philosopher?(int?num?ChopStick?c1?ChopStick?c2)?{
?????????philo_num?=?num;
?????????left?=?c1;
?????????right?=?c2;
?????????setDaemon(true);??//此函數(shù)設true時,關閉主線程,子線程也跟著關閉
?????????//否則,關閉主線程
評論
共有 條評論