CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

有关多线程,消费者和生产者的问题

楼主crasy1984(hunter)2004-12-01 20:51:23 在 Java / J2SE / 扩展类 提问

这个问题是用JAVA实现消费者和生产者。代码如下:  
          class     Procno    
  {  
  int   empty   =   10   ;  
  int   full     =   0   ;  
  int   []   common   =   new   int[10];  
          boolean   control   =   true;  
  }  
   
   
  //生产者  
    class   Producer   implements   Runnable    
  {  
  Procno   com   ;  
  Producer(Procno   p)  
  {  
  com   =   p;  
  }  
  public   void   run   ()  
  {  
  synchronized   (com){  
  try{  
  if(com.full<10&&com.control)  
  {  
   
      for(int   i=0;i<10;i++)  
    {  
  int   n   =   (int)(Math.random()*100);  
  com.common[i]   =   n;  
  System.out.println("produce   a   data:"   +   n);  
  com.empty--;  
  com.full++;  
   
  notify();  
   
  Thread.sleep(1000);  
  }  
   
  }else{  
  com.control   =   false;  
  wait();  
  }  
  }catch(InterruptedException   e){  
  System.out.println("producer   appear   excption!");  
          }catch(IllegalMonitorStateException   e1){System.out.println("erro1");}  
  }  
  }  
  }  
   
   
  //消费者  
   
    class   Consumer   implements   Runnable  
  {  
  Procno   com;  
  Consumer(Procno   c)  
  {  
  com   =   c;  
  }  
  public   void   run()  
  {  
  synchronized   (com){  
  try{  
                if(com.empty>0&&!com.control)  
          {  
           
                for(int   i=0;i<10;i++)  
                {  
          int   n   =   com.common[i];  
          System.out.println("consum   a   data:"   +   n);  
          Thread.sleep(1000);  
          com.empty++;  
  com.full--;  
  notify();  
                }  
           
          }else{  
                  com.control   =   true;  
                  wait();  
          }  
                      }catch(InterruptedException   e){  
          System.out.println("consumer   appear   exception");  
          }catch(IllegalMonitorStateException   e1){System.out.println("erro2");}  
           
  }  
  }  
  }  
   
   
    class   TestProcno    
  {  
  public   static   void   main(String   args[])  
  {  
  Procno   comm   =   new   Procno();  
  Thread   t1   =   new   Thread(new   Producer(comm));  
  Thread   t2   =   new   Thread(new   Consumer(comm));  
   
  t1.start();  
  t2.start();  
  }  
  }  
  问题是老跳出IllegalMonitorStateException和InterruptedException这两个异常,不知道是为什么,请高手指导一下啊!谢谢了。  
  问题点数:0、回复次数:3Top

1 楼vgvg(上帝在关闭一扇窗的同时,在别处打开了一扇门。可这扇门迟迟不开,我只好破门而入!)回复于 2004-12-01 20:53:57 得分 0

Thread.sleep(1000);  
  wait();  
  是要捕捉异常的.Top

2 楼sexywarden03(tom)回复于 2004-12-01 21:03:22 得分 0

try{Thread.sleep(1000)}catch{InterrupedException   e){};  
  Top

3 楼crasy1984(hunter)回复于 2004-12-01 21:59:14 得分 0

这两个异常我已经在程序中写了也已经捕捉了,但是就是不知道怎么样改正才能消除IllegalMonitorStateException   这个异常,帮我修改一下吧,谢谢了!Top

相关问题

  • 关于多线程,生产者和消费者问题,谁可以用事件的方式,给我一个简单的实现,急!!
  • 生产者与消费者的问题!!!
  • 生产者与消费者的问题
  • 生产者消费者问题
  • 有关多线程!
  • 有关VB多线程
  • 有关多线程一问
  • P.V操作,生产者与消费者问题。
  • 生产者-消费者问题,有点菜,高手帮忙!
  • 这样的<生产者消费者问题>如何解决?

关键词

  • 消费者
  • procno
  • 问题
  • 消费者和生产者
  • producer
  • full
  • control

得分解答快速导航

  • 帖主:crasy1984

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo