Futures
に を送信することによって作成されCallable
たのセットがありExecutor
ます。擬似コード:
for all tasks
futures.add(executor.submit(new callable(task)))
ここで、すべての先物を、すべてが完了するまで最大 n 秒待機させたいと考えています。呼び出すことができることはわかっていますFuture#get(timeout)
が、ループ内のすべての先物に対して順番に呼び出すと、タイムアウトが加算され始めます。擬似コード:
for all futures
future.get(timeout)
get
結果が準備できるまでタイムアウトでブロックします。したがって、1 番目がタイムアウトの直前に完了し、2 番目もタイムアウトの直前に完了する場合、全体の実行時間はnumber of futures * timeout
最大でもtimeout
.
Future
したがって、 s のリストとタイムアウトを受け入れ、すべてを並行して実行し、将来の結果のコレクションを返すメソッドを探しています。何か案は?