У меня возникла проблема при попытке вызвать список вызываемых вызовов из fixedThreadPool
. Хотя все вызывающие вызовы будут выполняться, некоторые из них, кажется, отправляются в разные потоки одновременно, поэтому их фактически вызывают не один раз. Смотрите код ниже:ExecutorService invokeAll() duplicates Callable, вызываемый
try {
ExecutorService es = Executors.newFixedThreadPool(Environment.nThreads);
es.invokeAll(Environment.jobPool);
es.shutdown();
} catch (InterruptedException e) {
e.printStackTrace();
}
Уверены ли вы, что одна и та же задача добавлена несколько раз в коллекцию, которую вы передаете в ExecutorService? Также вы уверены, что ни одна из ваших задач не бросает исключения во время их запуска? –
Трудно представить, что проблема заключается в этом фрагменте кода. Как создается «Environment.jobPool»? –
Это часть кода, где создается jobPool public static final ArrayList> jobPool = new ArrayList <Вызываемый