Рассмотрим этот код:
Thread thread = new Thread(() -> tasks.parallelStream().forEach(Runnable::run));
tasks — это список Runnable, которые должны выполняться параллельно. Когда мы запускаем этот поток, и он начинает свое выполнение, то в зависимости от некоторых вычислений нам нужно прервать (отменить) все эти задачи.
Прерывание потока остановит только одно из действий. Как мы обращаемся с другими? или, может быть, Streams не следует использовать таким образом? или вы знаете лучшее решение?
ExecutorService.invokeAll
с понятным способом отмены созданных задач. Почему вы настаиваете на использовании чего-то, что не предназначено для предоставления такой функции? Вtasks.parallelStream().forEach(Runnable::run)
нет ничего более читаемого, чем вexecutor.invokeAll(tasks)
- person Holger   schedule 16.06.2014ExecutorService
или даже реализоватьExecutorService
с запуском на месте, что очень просто при создании подклассовAbstractExecutorService
. При этом вы получаете последовательное выполнение с поддержкой отмены бесплатно… - person Holger   schedule 17.06.2014