ThreadPool通信

时间:2013-10-28 12:11:32

标签: java c multithreading concurrency pthreads

我们正在开发一种n轮胎系统,其中有+10个模块,每个模块都有一定的功能 每个模块都有自己的线程池和线程管理器 整个系统在JBoss AS上运行,一些模块使用本机代码(本地人pthread
一切都看起来很完美,除了我们最近发现其中一个模块在某个时间(高峰时间)工作非常慢,原因是因为模块有很多工作,我还检查并实现了整个线程相关模块线程池正在工作 但是当一个模块正在努力工作时,另一个模块有点空闲,或者不那么繁忙 的问题:
是否有可能从线程池a借用线程到线程池b并在努力工作之后取回借来的线程?!我和ExecutorService一起工作很多,但没有帮助,或者至少我不明白该怎么做。
请帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

线程数量与工作负载分配几乎没有关系。

如果其中一个模块是瓶颈,并且您的机器已经饱和,则必须实施自己的机制,以确保该模块在给定时间使用最多的资源。

一种简单的方法是监控等待处理关键模块的数据量,并在其超出某个阈值时暂停其他模块的工作。

其他方法是为所有数据实现优先级队列,其中数据的优先级基于其类型和已在队列中等待的时间。