package Test;/** *经典生产者与消费者问题:生产者不断的往仓库中存放产品,消费者从仓库中消费产品。 *其中生产者和消费者都可以有若干个。仓库容量有限,库满时不能存放,库空时不能取产品 */ public class ProducersAndConsumers { public static void main(String[] args) { Storage storage = new Storage(); Thread consumer = new Thread(new Consumer(storage)); consumer.setName("消费者"); Thread producer = new Thread(new Producer(storage)); producer.setName("生产者"); while(true) { consumer.start(); producer.start(); } /*consumer.start(); producer.start(); */ } }
会报错:
Exception in thread "main" 生产者 生产了产品(产品ID:090505105 产品名称:电话)
消费者 消费了产品(产品ID:090505105 产品名称:电话)
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at Test.ProducersAndConsumers.main(ProducersAndConsumers.java:16)
首先说是因为一个线程不可以被多次Start();修改成这样:
while(true) { consumer.run(); producer.run(); } ,结果控制台无反应了!!!
后来经高人指点,得知我想要的效果应该在线程的内部进行while循环。