【发布时间】:2013-11-07 04:57:36
【问题描述】:
我们正在开发一个 n-tire 系统,其中有 +10 个模块可用,每个模块都执行特定的工作。
每个模块都有自己的线程池和线程管理器。
整个系统运行在 JBoss AS 上,部分模块使用原生代码(pthread 本地人)
一切看起来都很完美,除了我们最近发现其中一个模块在某个时间(高峰时间)工作得很慢,原因是因为该模块有很多工作,我也检查并实现了整个线程相关模块线程池正在工作。
但是当一个模块在努力工作时,另一个模块有点空闲,或者不是那么忙。
问题:
有没有可能从线程池a借线程到线程池b,辛苦工作后取回借来的线程?!我与ExecutorService 合作了很多,但它没有帮助,或者至少我不明白该怎么做。
请帮忙,谢谢。
【问题讨论】:
-
你不应该看另一个模块是否“努力工作”,而是要找出是否有可用的 CPU 内核。如果有,就将线程添加到“努力工作”模块的线程池中,否则,先停止其他模块,直到出现空闲CPU,否则购买更多的CPU。
标签: java c multithreading concurrency pthreads