我有一個執行長時間計算的程序,所以我想加快其性能。於是,我就在此刻推出3個線程,但java.exe
仍佔有CPU使用率(所以,只使用一個CPU)的25%,即使我嘗試使用.setPriority(Thread.MAX_PRIORITY);
和java.exe
設置優先級的實時它的遺體(24) 。我試圖使用RealtimeThread
,但似乎它工作得更慢。如果每個線程都分配給一個處理器,並且總CPU使用率增加到75%,但是我不知道該怎麼做。這就是我的代碼現在的樣子:爲什麼我的線程程序只使用一個CPU?
Thread g1 = new MyThread(i,j);
g1.setPriority(Thread.MAX_PRIORITY);
g1.run();
Thread g2 = new MyThread(j,i);
g2.setPriority(Thread.MAX_PRIORITY);
g2.run();
Thread g3 = new MyThread(i,j);
g3.setPriority(Thread.MAX_PRIORITY);
g3.run();
if (g1.isAlive()) {
g1.join();
}
if (g2.isAlive()) {
g2.join();
}
if (g3.isAlive()) {
g3.join();
}
使用'。開始()'正如其他人指出的 - 然後你可能* *要調度留給調度,而不是與自己的優先級玩。除非您對線程調度有相當的瞭解,否則調度程序的工作可能會比做得更好(最好)。 –
[java thread - run()和start()方法]的可能重複(http://stackoverflow.com/questions/3027495/java-thread-run-and-start-methods) – 2012-05-08 22:04:04