2011-10-29 66 views
-2

我有一個相對簡單的程序,目前使用1個線程(主)。該應用程序大約需要30分鐘才能完成。但是,根據任務管理器,它只使用了25%的處理能力。它似乎分佈在我的處理器的4個內核上。Java - 使用更多的處理能力處理非常高的計算任務

有沒有辦法讓'JVM使用更多的資源?

還有很多讀寫文件。難道這是一個瓶頸,因此只有25%的處理資源正在使用的原因?

感謝

回答

6

如果你只有一個線程和四個核,那麼漂亮的定義很多,你只能使用總處理能力的25%。如果該線程在處理器之間跳躍,則無關緊要。

如果您想讓JVM使用更多的資源,您需要並行操作。沒有關於任務的更多信息,我們無法真正幫助您做到這一點。

至於讀寫文件 - 這不會是一個CPU瓶頸,但它可能證明是其他領域的瓶頸。

+0

+1:如果你有一個CPU綁定進程,不要假設線程越多越好。您需要使用全部4個內核的最少線程數爲4個線程。 –

0

單線程一次只能在一個內核上運行(儘管它可以在執行過程中從一個內核切換到另一個內核,這就是爲什麼你看到它在多個內核上傳播的原因)。要利用所有的四個核心,你需要(至少)4個獨立的線程可以同時運行。