Java Futures()を使用して複数の同様のプロセス(SIMD)を実行するために私が思いつくことができる唯一のモデルjava.util.concurrent.Future<T>は、次のとおりです。
class Job extends Callable<T> {
public T call() {
// ...
}
}
List<Job> jobs = // ...
List<Future<T>> futures = ExecutorService.invokeAll(jobs);
for (Future<T> future : futures) {
T t = future.get();
// Do something with t ...
}
このモデルの問題は、ジョブ0の完了に長い時間がかかるが、ジョブ1、2、および3がすでに完了している場合、forループはジョブ0からの戻り値の取得を待機することです。
まだ準備ができていない場合は、電話をかけたり、ビジーウェイト(または電話)をしたりFutureせずに、各結果が利用可能になったときに各結果を取得できるモデルはありますか?Future.isDone()Thread.sleep()