Я бы хотел, чтобы исполнитель не запускал больше объектов Future, даже если они были отправлены исполнителю.Запуск нескольких потоков, хотя Executor все работает нормально, но Executor должен остановиться, когда один из Callable возвращает Boolean TRUE.Хорошо, что текущее запущенное Future завершено, но было бы пустой тратой времени на продолжение остальных.
Set<Future<Boolean>> calculationSet = new HashSet<Future<Boolean>>();
threadPool = Executors.newFixedThreadPool(3);
int x = nextX();
int y = nextY();
do {
Callable<Boolean> mathCalculation = new MathCalculation(x, y);
Future<Boolean> futureAttempt = threadPool.submit(mathCalculation);
calculationSet.add(futureAttempt);
x = nextX();
y = nextY();
} while (runSomeMore());
Где MathCalculation реализует интерфейс Callable, а его метод call () возвращает логическое значение.
Поиск в наборе вычислений на каждой итерации невозможен, поскольку набор станет довольно большим и, очевидно, не будет работать из-за многопоточной ситуации.Есть ли способ добиться этого?