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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天看生产者与消费者!写的代码,不知道错在哪里。
  1. class Shop
  2. {
  3.         private String name;
  4.         private int num = 1;
  5.         private boolean flag = false;

  6.         public synchronized void pro(String name)
  7.         {
  8.                 if(flag)
  9.                         try{wait();}catch(Exception e){}
  10.                
  11.                 this.name = name+"----"+num++;
  12.                 System.out.println(Thread.currentThread().getName()+"生产--"+name);
  13.                
  14.                 flag = true;
  15.                
  16.                 notifyAll();
  17.         }

  18.         public synchronized void con()
  19.         {
  20.                 if(!flag)
  21.                         try{wait();}catch(Exception e){}
  22.                
  23.                 System.out.println(Thread.currentThread().getName()+"消费------"+name);
  24.                
  25.                 flag = false;
  26.                
  27.                 notifyAll();
  28.         }
  29. }

  30. class Pro implements Runnable
  31. {
  32.         private Shop s;
  33.         Pro(Shop s)
  34.         {
  35.                 this.s = s;
  36.         }
  37.         public void run()
  38.         {
  39.                 while(true)
  40.                         s.pro("娃娃");
  41.         }
  42. }

  43. class Con implements Runnable
  44. {
  45.         private Shop s;
  46.         Con(Shop s)
  47.         {
  48.                 this.s = s;
  49.         }
  50.         public void run()
  51.         {
  52.                 while(true)
  53.                         s.con();
  54.         }
  55. }

  56. class ProConTest
  57. {
  58.         public static void main(String[] args)
  59.         {
  60.                 Shop s = new Shop();

  61.                 Pro p = new Pro(s);
  62.                 Con c = new Con(s);

  63.                 Thread t1 = new Thread(p);
  64.                 Thread t2 = new Thread(c);

  65.                 t1.start();
  66.                 t2.start();
  67.         }
  68. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

正序浏览
黄泉 发表于 2014-4-5 23:05
太感谢了!    见到这个提示我也郁闷了。   真是奇葩的提示。
不过谢谢你,又学到了点知识 ...

哈哈哈互相帮助嘛,你都37分了还担心不够?
回复 使用道具 举报
hyace 发表于 2014-4-5 22:47
第一次见。。试着Eclipse里编译了下,报错是“A class file was not written. The project may be inconsis ...

太感谢了!    见到这个提示我也郁闷了。   真是奇葩的提示。
不过谢谢你,又学到了点知识
回复 使用道具 举报
第一次见。。试着Eclipse里编译了下,报错是“A class file was not written. The project may be inconsistent, if so try refreshing this project and building it“,搜了下是你类名起的有问题,con是操作系统里的设备名,CON, PRN, AUX, CLOCK$, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 都不能用,把你con都改成了cus。
  1. package com.hyace.test;

  2. class Shop
  3. {
  4.         private String name;
  5.         private int num = 1;
  6.         private boolean flag = false;

  7.         public synchronized void pro(String name)
  8.         {
  9.                 if(flag)
  10.                         try{wait();}catch(Exception e){}
  11.                
  12.                 this.name = name+"----"+num++;
  13.                 System.out.println(Thread.currentThread().getName()+"生产--"+name);
  14.                
  15.                 flag = true;
  16.                
  17.                 notifyAll();
  18.         }

  19.         public synchronized void cus()
  20.         {
  21.                 if(!flag)
  22.                         try{wait();}catch(Exception e){}
  23.                
  24.                 System.out.println(Thread.currentThread().getName()+"消费------"+name);
  25.                
  26.                 flag = false;
  27.                
  28.                 notifyAll();
  29.         }
  30. }

  31. class Pro implements Runnable
  32. {
  33.         private Shop s;
  34.         Pro(Shop s)
  35.         {
  36.                 this.s = s;
  37.         }
  38.         public void run()
  39.         {
  40.                 while(true)
  41.                         s.pro("娃娃");
  42.         }
  43. }

  44. class Cus implements Runnable
  45. {
  46.         private Shop s;
  47.         Cus(Shop s)
  48.         {
  49.                 this.s = s;
  50.         }
  51.         public void run()
  52.         {
  53.                 while(true)
  54.                         s.cus();
  55.         }
  56. }

  57. class Demo
  58. {
  59.         public static void main(String[] args)
  60.         {
  61.                 Shop s = new Shop();

  62.                 Pro p = new Pro(s);
  63.                 Cus c = new Cus(s);

  64.                 Thread t1 = new Thread(p);
  65.                 Thread t2 = new Thread(c);

  66.                 t1.start();
  67.                 t2.start();
  68.         }
  69. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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