私は非同期で2つのタスクを実行するためにCompletetable futureを使用しようとしています。プログラムは非同期的に実行され、a()とb()が最初に任意の順序で同時に実行されます。しかし、C()のみ()の1またはb(どちらか後に実行することができます)私はCompletableFutureのAPIに精通していないよいずれかの非同期メソッドが実行された後にJavaでメソッドを実行していますか?
class Pair{
public void pair2() throws InterruptedException, ExecutionException {
CompletableFuture<Void> fa = CompletableFuture.runAsync(() -> a());
CompletableFuture<Void> fb = CompletableFuture.runAsync(() -> b());
if(fa.isDone || fb.isDone){ //should not be if loop.
c();
}
return;
}
public void a(){
System.out.println("I'm a.");
return;
}
public void b(){
System.out.println("I'm b.");
return;
}
public void c(){
System.out.println("I'm c, I cannot be the first!");
return;
}
}
を完了は、タスクのいずれかが行われているかどうかを確認する方法がありますし、次のメソッドCを呼び出しますか?
い '場合(fa.isDone())'の仕事を? – Colonder
残念ながら、 – Carrein