问题描述:一个仓库可以存放N件物品。生产者每生产一件产品,将产品放入仓库,仓库满了就停止生产。消费者每次从仓库中去一件物品,然后进行消费,仓库空时就停止消费。 解答:在J2SE1.5中的java.util.concurrent 新功能包提供一些实用的通用类供并行程序使用。其中的BlockingQueue接口及其实现类对于解决[生产者-消费者问题]非常方便。下面是实现的代码(例子摘抄自jdk1.5帮助文档,稍做修改): import java.util.concurrent.ArrayBlockingQueue; /** BlockingQueue是线程安全的,当仓库中已经没有物品而消费者继续往里面取时队列自动进行阻塞。需要注意的是,BlockingQueue是不接受null值的,但尝试将一个null值插入队列,会抛出NullPointerException 例外。 |
Java中实现Consumer-Producer
最新推荐文章于 2024-08-11 11:21:10 发布