Я пишу приложение на Java, которое использует ExecutorService для запуска нескольких потоков.Отслеживание завершенных задач в ExecutorService
Я хочу отправить несколько задач (в тысячах раз подряд) в Исполнитель и как это сделать, получить их результат. То, как я подхожу к этому, каждый раз, когда я вызываю функцию submit(), я получаю Будущее, которое я храню в ArrayList. Позже я передаю список в поток, который продолжает итерацию по нему, вызывая функцию future.get() с таймаутом, чтобы проверить, завершена ли задание. это правильный подход или слишком неэффективен?
EDIT --- Больше информации --- Другая проблема заключается в том, что каждый Callable занимает различное количество времени обработки. Поэтому, если я просто выберу первый элемент из списка и вызову get() на нем, он будет блокироваться, а результаты других могут стать доступными, и программа не будет знать. Вот почему мне нужно продолжать повторять таймауты.
заранее спасибо
Я рекомендую вам рассмотреть утилиты ListenableFuture в библиотеке Гуава: https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained – Enwired