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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-7-4 20:28  /  930 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class ProducerConsumerDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Resource r=new Resource();
  6.                
  7.                 Producer pro=new Producer(r);
  8.                
  9.                 Consumer con=new Consumer(r);
  10.                
  11.                 Thread t1=new Thread(pro);
  12.                 Thread t2=new Thread(con);
  13.                 t1.start();
  14.                 t2.start();
  15.         }
  16. }



  17. class Resource
  18. {
  19.         private String name;
  20.         private int count=1;
  21.         private boolean flag=false;
  22.        
  23.         public synchronized void  set(String name)
  24.         {
  25.                 if(flag)
  26.                    try{wait();}catch(Exception e){}
  27.                 this.name=name+"--"+count++;
  28.                
  29.                 System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
  30.                 flag=true;
  31.                 this.notify();
  32.                        
  33.         }       
  34.        
  35.         public void out()
  36.         {
  37.                 if(!flag)
  38.                    try{wait();}catch(Exception e){}
  39.                 System.out.println(Thread.currentThread().getName()+"...消费者..."+this.name);
  40.                 flag=false;
  41.                 this.notify();
  42.         }
  43. }


  44. class Producer implements Runnable
  45. {
  46.         private Resource res;
  47.        
  48.         Producer(Resource res)
  49.         {
  50.                 this.res=res;       
  51.         }
  52.         public void run()
  53.         {
  54.                 while(true)
  55.                 {
  56.                         res.set("+商品+");       
  57.                 }
  58.   }
  59.        
  60. }


  61. class Consumer implements Runnable
  62. {
  63.          private Resource res;
  64.          
  65.          Consumer(Resource res)
  66.          {
  67.                  this.res=res;       
  68.          }
  69.          public void run()
  70.          {
  71.                  while(true)
  72.           {
  73.                   res.out();       
  74.           }
  75.          }
  76. }
复制代码
D:\java0218\day06>java ProducerConsumerDemo
Thread-0...生产者...+商品+--1
Thread-1...消费者...+商品+--1
Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
        at java.lang.Object.notify(Native Method)
        at Resource.out(ProducerConsumerDemo.java:44)
        at Consumer.run(ProducerConsumerDemo.java:80)
        at java.lang.Thread.run(Thread.java:744)


大家好  运行的时候出现上边提示 我看不懂 哪位大神帮我分析下这个是什么意思啊  代码是和视频里边一模一样的  让我很郁闷!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马