java多线程案例8-5小朋友就餐(哲学家就餐)

题目:一圆桌前坐着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();
	
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值