关于多线程的经典问题——生产者消费者,不能实现循环工作。
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循环。
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循环。
相关文章推荐
- java多线程总结六:经典生产者消费者问题实现
- 多线程经典案例——生产者/消费者问题的Java实现与详解
- java多线程实现生产者与消费者---经典问题
- 多线程经典问题之生产者消费者问题的JAVA实现
- 关于网宿厦门研发中心笔试的一道PV操作题:利用java中的多线程实现生产者与消费者的同步问题
- java多线程总结六:经典生产者消费者问题实现
- java多线程总结六:经典生产者消费者问题实现
- 用多线程实现“生产者-消费者问题”(代码+实验报告)
- Java实现 简单的多线程“生产者-消费者”问题
- .net实现--多线程之生产者/消费者问题
- 用JAVA实现多线程(生产者与消费者问题)
- 多线程实现生产者消费者问题 详细注释 事件+临界区 信号量+临界区2种方法
- java 多线程经典例子——生产者与消费者的问题
- 多线程经典问题-生产者与消费者
- JAVA多线程经典问题 -- 生产者 消费者 同步队列实现方法
- 经典线程同步问题(生产者&消费者)--Java实现
- 经典多线程实例:生产者消费者问题
- 经典线程同步问题(生产者&消费者)--Java实现
- java多线程之生产者消费者经典问题
- 黑马程序员——多线程操作经典实例:生产者消费者问题