我有一個相對簡單的程序,目前使用1個線程(主)。該應用程序大約需要30分鐘才能完成。但是,根據任務管理器,它只使用了25%的處理能力。它似乎分佈在我的處理器的4個內核上。Java - 使用更多的處理能力處理非常高的計算任務
有沒有辦法讓'JVM使用更多的資源?
還有很多讀寫文件。難道這是一個瓶頸,因此只有25%的處理資源正在使用的原因?
感謝
我有一個相對簡單的程序,目前使用1個線程(主)。該應用程序大約需要30分鐘才能完成。但是,根據任務管理器,它只使用了25%的處理能力。它似乎分佈在我的處理器的4個內核上。Java - 使用更多的處理能力處理非常高的計算任務
有沒有辦法讓'JVM使用更多的資源?
還有很多讀寫文件。難道這是一個瓶頸,因此只有25%的處理資源正在使用的原因?
感謝
如果你只有一個線程和四個核,那麼漂亮的定義很多,你只能使用總處理能力的25%。如果該線程在處理器之間跳躍,則無關緊要。
如果您想讓JVM使用更多的資源,您需要並行操作。沒有關於任務的更多信息,我們無法真正幫助您做到這一點。
至於讀寫文件 - 這不會是一個CPU瓶頸,但它可能證明是其他領域的瓶頸。
單線程一次只能在一個內核上運行(儘管它可以在執行過程中從一個內核切換到另一個內核,這就是爲什麼你看到它在多個內核上傳播的原因)。要利用所有的四個核心,你需要(至少)4個獨立的線程可以同時運行。
+1:如果你有一個CPU綁定進程,不要假設線程越多越好。您需要使用全部4個內核的最少線程數爲4個線程。 –