Wie verwende ich CompletableFuture.thenComposeAsync ()?
Gegeben
public class Test
{
public static void main(String[] args)
{
int nThreads = 1;
Executor e = Executors.newFixedThreadPool(nThreads);
CompletableFuture.runAsync(() ->
{
System.out.println("Task 1. Thread: " + Thread.currentThread().getId());
}, e).thenComposeAsync((Void unused) ->
{
return CompletableFuture.runAsync(() ->
{
System.out.println("Task 2. Thread: " + Thread.currentThread().getId());
}, e);
}, e).join();
System.out.println("finished");
}
}
Ich erwarte, dass ein einzelner Executor-Thread Task 1 und anschließend Task 2 ausführt. Stattdessen bleibt der Code hängen, wennnThreads
ist kleiner als 2.
Future
zu vervollständigen, aber es ist nicht klar, warum.Wenn ich die Verwendung von 2 Threads zulasse, wofür wird jeder Thread verwendet? Kurz gesagt, bitte helfen Sie mir zu verstehen, wiethenComposeAsync()
funktioniert tatsächlich. Der Javadoc sieht so aus, als wäre er für Roboter anstelle von Menschen geschrieben worden:)