您的位置:首页 > 其它

关于多线程的经典问题——生产者消费者,不能实现循环工作。

2014-12-14 00:05 459 查看
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循环。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程