【发布时间】:2016-01-22 06:08:23
【问题描述】:
我有一个使用生产者和消费者模式的代码。生产者产生一些数据对象的地方将它们放入阻塞队列,消费者从队列中消费处理数据对象并将其发送到另一个类
生产者 --> 阻塞队列(数据对象) 解析器 --> 其他应用程序
现在生产者生产的速率可以变化,这意味着排队的数据对象可以变化。
从队列中处理消费者需要在线程中运行的所有数据对象。
现在我的要求是在有大量数据对象排队的地方我将消费者线程增加到预定义的数量,以便及时处理数据对象,但是当队列中的数据量较少/队列中的数据是减少了我也想减少线程。
简而言之,我想根据队列的大小来改变线程的数量。我可以实现这一目标的最佳方法是什么。
【问题讨论】:
-
您在研究中发现了什么?您已经尝试过哪些选项?有什么结果?您是否在实施过程中遇到问题(在这种情况下,请发布有关您的实施的具体问题)或结果是否令您不满意?
-
考虑使用
java.util.concurrentThreadPoolExecutor,而不是使用显式创建的队列和显式创建的线程。ThreadPoolExecutor自动调整给定corePoolSize和给定maximumPoolSize之间的工作线程数。 -
使用 java.util.concurrentThreadPoolExecutor 工作
标签: java multithreading threadpool