У меня есть служба-исполнитель с пулом потоков из 10, и я ожидал, что я получу 10 заявлений распечатки, разделенных на три секунды, но я получаю только один вывод распечатки. Я передал 10 в качестве параметра, поэтому ожидал, что будет работать 10 потоков. Как я могу получить 10 будущих объектов?Исполнитель не возвращает 10 будущих объектов
public class Demo {
private static final ExecutorService executor = Executors.newFixedThreadPool(10);
public static void main (String[] args) throws ExecutionException, InterruptedException {
ArrayList futureObjects = new ArrayList();
Callable<Integer> task =() -> {
try {
TimeUnit.SECONDS.sleep(3);
return 123;
}
catch (InterruptedException e) {
throw new IllegalStateException("task interrupted", e);
}
};
System.out.println("Before execution of threads");
Future<Integer> future = executor.submit(task);
Integer result = future.get();
futureObjects.add(future.get());
System.out.println("result: " + result);
for(Object futures : futureObjects){
System.out.println("Futures in ArrayList: " + futures);
}
}
}
Выход я получаю:
Перед выполнением потоков
результат: 123
Фьючерсы в ArrayList: 123
Вы посмотрели мой ответ? – developer
Да, спасибо, кажется, что сон только приостанавливается в начале, а затем выплевывает все выходные 10 будущих объектов одновременно. Это не имеет значения только для наблюдения. –