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

来源:互联网 发布:sql删除部分字段 编辑:程序博客网 时间:2024/06/07 03:51

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循环。

 

 

 

0 0
原创粉丝点击