所以我有一個程序運行一堆不同的計算,然後返回一個結果,當所有的計算完成。爲什麼我的代碼在Java中使用多線程的速度較慢?
本來我的代碼是同步的類似如下:
public class MyApplication{
public static void main(String[] args) {
doCalculation(1);
doCalculation(2);
doCalculation(3);
doCalculation(4);
doCalculation(5);
doCalculation(6);
doCalculation(7);
doCalculation(8);
/* Print result */
}
}
我認爲這將是更有效的,現在我有一些像運行在新線程這些計算,
public class MyApplication{
public static void main(String[] args) {
List<Thread> threads = new ArrayList<Thread>();
threads.add(doCalculation(1));
threads.add(doCalculation(2));
threads.add(doCalculation(3));
threads.add(doCalculation(4));
threads.add(doCalculation(5));
threads.add(doCalculation(6));
threads.add(doCalculation(7));
threads.add(doCalculation(8));
for(Thread t : threads){
if(t.isAlive()){
try{
t.join();
} catch(InterruptedException e) {
System.out.println("Error calculating fitness");
}
}
}
/* Print result */
}
}
我對不起,我是一個完整的初學者線程。如果我不得不猜測我會假設我產生了兩個很多的新線程(在我的應用程序中有大約50個計算),但任何建議都會非常感謝!
而我之前並不知道:O列表中的線程。有趣! – Anurag 2014-12-05 21:55:10
doCalculation()可能不會花費足夠的時間來抵消線程創建的開銷。 – 2014-12-05 22:01:11