我有一个部署在tomcat 6
的应用程序
在此应用程序中,我创建了一个thread class
,它从表中提取1000条记录并处理它们并存储在DataBase
的4个不同表中。
我一次运行两个threads
来保护流程免受deadlock
的影响
有没有办法schedule these threads
相应地cpu utilization
即。如果没有cpu,则不会创建新线程。
答案 0 :(得分:2)
如果我正确地理解了你的问题,我认为这个案例在Joshua Bloch的第二版“Effective Java”中得到了考虑:
如果服务器负载过重,其所有CPU都已完全加载 利用,更多的任务到来,将创建更多的线程,其中 只会让事情变得更糟。因此,在一个重负荷 生产服务器,你最好使用 Executors.newFixedThreadPool,它为您提供了一个固定的池 线程数,或直接使用ThreadPoolExecutor类 最大限度的控制。
虽然我还没有尝试过,但使用Executors似乎是一个好主意。
答案 1 :(得分:0)
无法使用纯Java代码检测CPU利用率。但你可以打电话 调用Runtime.getRuntime()。EXEC( “顶部”) 然后分析inputStream结果以查找CPU利用率。如果超载,请不要启动新线程。