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利用率。如果它超載,請不要啓動新線程。