1

我有我已经创建了一个thread class其从表中取出1000条记录,并以DataBase处理它们,并存储在4个不同的表内,以被部署在tomcat 6
在本申请中应用。
我每次运行两个threads以保护deadlock的进程。
有没有办法根据我的cpu utilizationschedule these threads
即。如果没有cpu,则不会创建新线程。java的多线程的CPU利用率

+1

我认为这个问题不会减去一个负数。它的一个很好的问题 – 2012-03-01 07:33:03

+0

谢谢nivesh .... – Abhij 2012-03-01 07:38:16

回答

2

如果我理解正确的话您的问题,我觉得这种情况下,在约书亚布洛赫的“有效的Java”的第二版认为:

如果服务器负载过重,以致所有的CPU是完全 利用,并且有更多的任务到达,更多的线程将被创建,而这只会使事情变得更糟。因此,在负载很重的 生产服务器上,使用Executors.newFixedThreadPool会更好,因为Executors.newFixedThreadPool为您提供了一个固定的 线程数量的池,或者直接使用ThreadPoolExecutor类,以获得最大控制权。 。

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

0

无法用纯Java代码检测CPU利用率。但您可以拨打 Runtime.getRuntime().exec(“top”) 然后分析inputStream结果以查找CPU利用率。如果它超载,请不要启动新线程。