2
私はCompletableFuture
ブロックスレッドからget()
メソッドを知っていますが、どのように達成することができますSystem.out.println("xD")
FutureはCompletableFutureが完了した時点で実行されているので、Futureが処理中です。 コード:CompletableFutureブロックメインスレッド
import java.util.concurrent.*;
import java.util.stream.Stream;
public class CompletableFutureTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture.supplyAsync(CompletableFutureTest::counting).whenComplete((result, exception) -> {
if (exception != null) {
System.out.println(result);
} else {
}
}).get();
System.out.println("xD");
}
public static int counting() {
Stream.iterate(1, integer -> integer +1).limit(5).forEach(System.out::println);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 10;
}
}
未来を変数に格納し、印刷して、_then_を呼び出して「Future#get」を呼び出します。結局のところ、あなたが未来を待っているならば、何かを並行して行うことはできません。また、メソッドが失敗した場合にのみ印刷します(おそらく 'if'と逆にする必要があります)。 – Rogue
@Rogue未来を待つ必要がなければ何をすべきですか? – masterofdisaster