Executorに送信された場合でも、ExecutorがFutureオブジェクトを実行しないようにしたいのですが。エグゼキュータを介して複数のスレッドを実行することはすべて正常に機能しますが、Callableのいずれかがブール値の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()メソッドがブール値を返す場合。
セットが非常に大きくなり、マルチスレッドの状況のために明らかに機能しないため、各反復でcalculationSetを検索することはオプションではありません。これを達成する方法はありますか?