Я написал код для ускорения алгоритма перебора, я решил использовать многопоточность. Хотя я новичок в многопоточности и понимаю, что, создавая большие пулы рабочих (потоков) и распределяя между ними рабочие места, грубая сила должна быть очень быстрой. Ну, мой код ниже работает быстрее с небольшим количеством работников (10 или меньше), но медленнее с большим количеством работников (1000). Почему странное поведение и где ошибка?
ExecutorService executor = Executors.newFixedThreadPool(1000);
List<Callable<Integer>> callList = new ArrayList<>();
Callable<Integer> worker;
for (int i = 0; i < 1000; i++) {
worker = new WorkerThread(start, end, id);
Thread.currentThread().setName("Staff "+i);
callList.add(worker);
start = end;
end = end + addition + 1;
}
int result = executor.invokeAny(callList);
System.out.println("Done Work");
System.out.println(result);
executor.shutdownNow();
executor.awaitTermination(5, TimeUnit.NANOSECONDS);