本帖最后由 王靖远 于 2013-5-21 13:09 编辑
- class ProducerConsumerDemo
- {
- public static void main(String[] args)
- {
- Resource r = new Resource();
- Producer pro = new Producer(r);
- Consumer con = new Consumer(r);
-
- Thread t1 = new Thread(pro);
- Thread t2 = new Thread(con);
-
- t1.start();
- t2.start();
- }
- }
- class Resource
- {
- private String name;
- private int count = 1;
- private boolean flag = false;
- public synchronized void set(String name)
- {
- if(flag)
- try{this.wait();}catch(Exception e){}
- this.name =name+"--"+count++;
- System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
- flag = true;
- this.notify();
- }
- public void out()
- {
- if(!flag)
- try{this.wait();}catch(Exception e){}
- System.out.println(Thread.currentThread().getName()+"...消费者..."+this.name);
- flag = false;
- this.notify();
- }
- }
- class Producer implements Runnable
- {
- private Resource res;
- Producer(Resource res)
- {
- this.res = res;
- }
- public void run()
- {
- while(true)
- {
- res.set("+商品+");
- }
- }
- }
- class Consumer implements Runnable
- {
- private Resource res;
- Consumer(Resource res)
- {
- this.res = res;
- }
- public void run()
- {
- while(true)
- {
- res.out();
- }
- }
- }
复制代码 Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
at java.lang.Object.notify(Native Method)
at com.haha.Resource.out(ProducerConsumerDemo.java:41)
at com.haha.Consumer.run(ProducerConsumerDemo.java:72)
at java.lang.Thread.run(Thread.java:722)
Thread-0...生产者...+商品+--1
Thread-1...消费者...+商品+--1
|
|