java多线程cpu利用率

时间:2012-03-01 07:08:50

标签: java multithreading tomcat memory-management batch-processing

我有一个部署在tomcat 6的应用程序 在此应用程序中,我创建了一个thread class,它从表中提取1000条记录并处理它们并存储在DataBase的4个不同表中。
我一次运行两个threads来保护流程免受deadlock的影响 有没有办法schedule these threads相应地cpu utilization 即。如果没有cpu,则不会创建新线程。

2 个答案:

答案 0 :(得分:2)

如果我正确地理解了你的问题,我认为这个案例在Joshua Bloch的第二版“Effective Java”中得到了考虑:

  

如果服务器负载过重,其所有CPU都已完全加载   利用,更多的任务到来,将创建更多的线程,其中   只会让事情变得更糟。因此,在一个重负荷   生产服务器,你最好使用   Executors.newFixedThreadPool,它为您提供了一个固定的池   线程数,或直接使用ThreadPoolExecutor类   最大限度的控制。

虽然我还没有尝试过,但使用Executors似乎是一个好主意。

答案 1 :(得分:0)

无法使用纯Java代码检测CPU利用率。但你可以打电话 调用Runtime.getRuntime()。EXEC( “顶部”) 然后分析inputStream结果以查找CPU利用率。如果超载,请不要启动新线程。