0

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

4

1 回答 1

2

线程数量与工作负载分配关系不大。

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

一种简单的方法是监控关键模块中等待处理的数据量,如果超过某个阈值则暂停其他模块的工作。

另一种方法是为所有数据实现优先级队列,其中数据根据其类型和已在队列中等待的时间进行优先级排序。

于 2013-10-28T12:25:29.267 回答