哲學家吃飯問題模擬(java寫的)

2021-09-01 00:27:04 字數 2006 閱讀 9878

[size=large]這裡是兩種演算法,公用乙個chopstick類:

chopstick類:

[/size]

public class chopstick

public chopstick(string name)

public void setenable(boolean enbl)

public boolean getenable()

/*** 拿起筷子

*/public synchronized void pickup()

this.enable = false;

}catch(exception e)

}/**

* 放下手中的筷子

*/public synchronized void pickdown()

}

[size=large]philosopher類[/size]

public class philosopher extends thread

@override

public void run() catch (interruptedexception e)

system.out.println(this.name+"吃飽了");

rightchopstick.pickdown();

system.out.println(this.name+"放下了右手的筷子"+this.rightchopstick.name);

leftchopstick.pickdown();

system.out.println(this.name+"放下了左手的筷子"+this.leftchopstick.name);}}

[size=large]philosopher2[/size]

public class philosopher2 extends thread

@override

public void run() catch (interruptedexception e)

system.out.println(this.name + "吃飽了");

rightchopstick.pickdown();

system.out.println(this.name + "放下了右手的"

+ this.rightchopstick.name);

leftchopstick.pickdown();

system.out.println(this.name + "放下了左手的"

+ this.leftchopstick.name);

this.withchopstickstatus = this.withoutchopstick;

break;

} else catch (interruptedexception e) }}

}}}

[size=large]dining類[/size]

public class dining catch (interruptedexception e)

}system.out.println(system.currenttimemillis() - starttime);}}

[size=large]dining2類[/size]

public class dining2 catch (interruptedexception e)

}system.out.println(system.currenttimemillis() - starttime);}}

[size=large]

為了防止5位哲學家同時拿筷子,同時等或是同時放下。可以讓哲學家2和4先。

[/size]

哲學家吃飯問題

code include include define people 5 define meat 10 肉塊的數量 static int tman people int n 1 定義n為共吃肉的數量 定義一些需要跟哲學家對應的陣列 static int thinking people 第n個哲學家在...

哲學家吃飯問題2019 8 26

有五個哲學家公用一張餐桌,分別坐在周圍的五張椅子上,在餐桌上有五個碗和五隻筷子,他們的生活方式是交替地進行思考和用餐。平時,乙個哲學家進行思考,飢餓時便試圖拿取其左右最靠近他的筷子,只有在他拿到兩隻筷子時才能進餐,進餐完畢,放下筷子繼續思考。思路 選用互斥鎖mutex,如建立5個,pthread m...

Java 哲學家就餐問題

問題描述 一群哲學家聚在一起就餐,每兩個哲學家之間有一根筷子。每個哲學家需要兩根筷子才能用餐,並且一定是先拿起左手邊的筷子,然後再拿右手邊的筷子。如果所有哲學家在同一時間拿起左手邊的筷子,就有可能造成死鎖。請使用執行緒和鎖,編寫模擬哲學家就餐問題。避免出現死鎖。解法 首先,先不管死鎖,實現哲學家就餐...