题目:一圆桌前坐着5位小朋友,两个人中间有一根筷子,桌子中间有面条。小朋友边吃边玩,当饿了的时候拿起左右两根筷子吃饭,必须拿到两根才能吃饭,但是,小朋友在吃饭过程中,可能发生5个小朋友都拿起自己右手的筷子,这样每个小朋友都因缺少左手筷子而没法吃饭,本案例要求编写一个程序解决小朋友就餐问题,使每个小朋友都能成功就餐。
代码如下:
package GGS1;
public class Philosopher extends Thread {
private String name;
private Fork fork;
public Philosopher(String name,Fork fork) {
super(name);
this.name=name;
this.fork=fork;
}
public void run() {
while(true) {
playing();
fork.takeFork();
eating();
fork.putFork();
}
}
public void playing() {
System.out.println("小朋友正在玩耍...");
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void eating() {
System.out.println("小朋友正在用餐...");
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();