241. Hooking CompletableFuture and virtual threads
CompletableFuture
is one of the main asynchronous programming APIs in Java (if you need deep coverage of this topic, then you could consider checking out Java Coding Problems, First Edition, Chapter 11).
In order to use CompletableFuture
with virtual threads, we just have to use the proper executor for virtual threads:
private static final ExecutorService executor
= Executors.newVirtualThreadPerTaskExecutor();
Next, we use this executor to fetch three application testers in asynchronous mode via CompletableFuture
:
public static CompletableFuture<String> fetchTester1() {
return CompletableFuture.supplyAsync(() -> {
String tester1 = null;
try {
logger.info(Thread.currentThread().toString());
tester1 = fetchTester(1);
} catch (IOException | InterruptedException ex)
{ /* handle exceptions */ }
return tester1;
}, executor);
}
public static CompletableFuture<String> fetchTester2...