A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-22 11:24  /  989 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;
public class ProducerConsumerDemo {
public static void main(String[] args) {
  Resource r=new Resource();
  
  Producer p=new Producer(r);
  Consumer c=new Consumer(r);
  Thread t1=new Thread(p);
  Thread t2=new Thread(c);
  t1.start();
  t2.start();

}
}
class Resource{
private String name;
private int count=1;
private boolean flag=false;
public synchronized void produce(String name){
  
  if (flag)
   try {
    this.wait();
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  this.name=name+":"+(count++);
  System.out.println(Thread.currentThread().getName()+"生产"+this.name);
  flag=true;
  this.notify();
}
public synchronized void out(){
  if (!flag)
   try {
    this.wait();
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  System.out.println(Thread.currentThread().getName()+"......消费....."+this.name);
  flag=false;
  this.notify();
   
}
}
class Producer implements Runnable{
private Resource r;
public Producer(Resource r) {
  this.r=r;
}
@Override
public void run() {
  while (true) {
   r.produce("商品");
  }
  
}

}
class Consumer implements Runnable{
private Resource r;
    public Consumer(Resource r) {
  this.r=r;
}
@Override
public void run() {
  // TODO Auto-generated method stub
  while (true) {
   r.out();
  }
}

}
运行结果:
Thread-0生产商品:34939
Thread-1......消费.....商品:34939
Thread-0生产商品:34940
Thread-1......消费.....商品:34940
Thread-0生产商品:34941
Thread-1......消费.....商品:34941
Thread-0生产商品:34942
Thread-1......消费.....商品:34942
Thread-0生产商品:34943
Thread-1......消费.....商品:34943
Thread-0生产商品:34944
Thread-1......消费.....商品:34944
怎么不是从1开始生产?

1 个回复

倒序浏览
我的是从1开始的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马