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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我的代码怎么运行不起来呢,纠结呐,是我打错哪里了吗
  1. public class ProducerConsumerDemo {
  2.         public static void mian(String args[]) {
  3.                 Resource r = new Resource();
  4.                 Producer pr = new Producer(r);
  5.                 Consumer co = new Consumer(r);
  6.                 new Thread(pr).start();
  7.                 new Thread(co).start();
  8.         }
  9. }
  10. /*
  11. * 资源中心*/
  12. class Resource {
  13.         private String name;
  14.         private int count = 1;
  15.         private boolean flag = false;
  16.        
  17.         //生产
  18.         public synchronized void set(String name) {
  19.                 if(flag)
  20.                         try{this.wait();}catch(Exception e) {}
  21.                 this.name = name +"---"+count++;
  22.                 System.out.println(Thread.currentThread().getName()+"...生产..."+this.name);
  23.                 flag = false;
  24.                 this.notify();
  25.         }
  26.         //消费
  27.         public synchronized void out() {
  28.                 if(!flag)
  29.                         try{this.wait();}catch(Exception e) {}
  30.                 System.out.println(Thread.currentThread().getName()+".......消费..."+this.name);
  31.                 flag = true;
  32.                 this.notify();
  33.         }
  34. }

  35. //生产者
  36. class Producer implements Runnable {
  37.         private Resource res;
  38.         Producer(Resource res)
  39.         {
  40.                 this.res = res;
  41.         }
  42.         public void run()
  43.         {
  44.                 while(true)
  45.                         res.set("*面包*");
  46.         }
  47. }

  48. //消费者
  49. class Consumer implements Runnable {
  50.         private Resource res;
  51.         Consumer(Resource res)
  52.         {
  53.                 this.res = res;
  54.         }
  55.         public void run()
  56.         {
  57.                 while(true)
  58.                         res.out();
  59.         }
  60. }
复制代码





评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

7 个回复

正序浏览
戒爱 中级黑马 2014-2-18 13:33:49
7#
e.c 发表于 2014-2-17 15:12
main方法你写错成mian了

生产方法里:flag = true;消费方法里:flag = false;不然会总是生产,或总是消费 ...

多谢大侠相助
回复 使用道具 举报
李金中 发表于 2014-2-17 15:12
main()拼写错误。。。
加分么。。。

恩恩,原来如此,多谢
回复 使用道具 举报
李金中 发表于 2014-2-17 15:12
main()拼写错误。。。
加分么。。。

哈哈,不该。。。只是分分好难得额~~以为会有流星撞地球。。。。。。。

评分

参与人数 1黑马币 +3 收起 理由
戒爱 + 3 赞一个!

查看全部评分

回复 使用道具 举报
main()拼写错了。。。

评分

参与人数 2黑马币 +6 收起 理由
戒爱 + 1 赞一个!
何伟超 + 5

查看全部评分

回复 使用道具 举报
main方法你写错成mian了

生产方法里:flag = true;消费方法里:flag = false;不然会总是生产,或总是消费。
if(flag){...}最好用while(flag){...}

评分

参与人数 2黑马币 +8 收起 理由
戒爱 + 3 赞一个!
何伟超 + 5

查看全部评分

回复 使用道具 举报
main()拼写错误。。。
加分么。。。

点评

你觉得应该加分吗?  发表于 2014-2-17 15:51

评分

参与人数 2黑马币 +6 收起 理由
戒爱 + 1 赞一个!
何伟超 + 5

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马