Я создал один вызываемый, который печатает пару строк и спит в течение 2 секунд. Я создал основной метод, который создает 10 экземпляров этого вызываемого и передает метод invokeALL для ExecutorService.почему все Future.get() throwing CancelleationException в invokeAll с таймаутом
service.invokeAll(callableList, 3, SECONDS);
, когда я повторяю возвращаемый список объектов будущего. Я получаю исключение CancellationException.
Я тестирование, будет ли все future.get() вызова вызывает CancellationException или только те задачи, которые могли бы не могли полным и были отменены.
Я получаю либо все результаты или все CancellationExceptions независимо от установки в invokeALL времени.
Я действительно ожидал, что по крайней мере некоторые задачи будут завершены и вернут мне результаты, когда я позвоню future.get().
Но я считаю, что все задачи отменены или завершены. Это все или ничего. – Mayur
Это, вероятно, означает, что первая не завершится через 3 секунды. TPE будет проходить через «отменить» каждое Будущее. Если будущее будет завершено, отмена будет noop. –
И вы уверены, что ** ВСЕ ** задачи отменены? Исключение CancellationException будет выброшено, если только один будет отменен (при условии, что вы выполняете итерацию над каждым и «получите») –