希望大家帮忙偶找找这个奇怪错误的原因!

class Order1 {
 private static int i = 0;
 private int count = i++;// count用来记数, 这里借助一个静态变量来对所创建的对象进行记数
 public Order1() {
  if(count == 10) {
   System.out.println("Out of food, closing");
   System.exit(0);
  }
 }
 public String toString() {
  return "#" + count;
 }
}
class  WaitPerson1 extends Thread {
 private Restaurant1 res;
 private String name;
 public WaitPerson1(Restaurant1 rest, String name){
  this.res = rest;
  this.name = name;
  this.start();
 }
 public void run() {
  synchronized(res) {
   while(!res.isHaveOrder()) { //如果没有定单就等待
    try {
     res.wait();
     //System.out.println(Thread.currentThread() + " is mantory!");
    } catch (InterruptedException e) {
     throw new RuntimeException(e);
    }
   }
   // 这句代码不可以放在while()循环中,否则可以看到有的线程抢到的是null
   System.out.println("WaitPerson " + name + " got " + res.consume());
   //System.out.println(Thread.currentThread() + " is alive!");
  }
 }
}
class Chef1 extends Thread {
 private Restaurant1 res;
 private String name;
 public Chef1(Restaurant1 rest, String name) {
  this.res = rest;
  this.name = name;
  this.start();
 }
 public void run() {
  while(true) {
   if(!res.isHaveOrder()) {
    System.out.println(name + " produces Order " + res.produce());
    synchronized(res) {
     res.notifyAll();
    }
   }
  }// end while
 }
}

public class Restaurant1 {
 private Order1 order;
 
 public Order1 produce() {
  order = new Order1();
  return order;
 }
 
 public Order1 consume() {
  Order1 temp = order;
  order = null;
  return temp;
 }
 
 public boolean isHaveOrder() {
  return order != null;
 }
 
 public static void main(String[] args) {
  Restaurant1 res = new Restaurant1();
  new WaitPerson1(res, "snow");
  new WaitPerson1(res, "snee");
  new Chef1(res, "tree");
 }
}

但是输出结果只有是:

 tree produces Order #0
Thread[Thread-1,5,main] is mantory!
WaitPerson snee got #0
Thread[Thread-1,5,main] is alive!
Thread[Thread-0,5,main] is mantory!
tree produces Order #1
Thread[Thread-0,5,main] is mantory!
WaitPerson snow got #1
Thread[Thread-0,5,main] is alive!
tree produces Order #2
为什么到这个地方就停止了???

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值