Итак, у меня есть программа, которая запускает кучу разных вычислений, а затем возвращает результат, когда все вычисления выполнены.Почему мой код медленнее, используя несколько потоков в 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
doCalculation(), вероятно, занимает достаточно много времени, чтобы компенсировать накладные расходы на создание потоков. –