I have wrote following code:
System.out.println(\"Main thread:\" + Thread.currentThread().getId());
CompletableFuture future = CompletableFut
Add this line:
ForkJoinPool.commonPool().awaitTermination(5, TimeUnit.SECONDS);
to the main method after running your future. I'll block until all tasks in the pool have been completed.
Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.
The javadoc for runAsync()
says:
Returns a new CompletableFuture that is asynchronously completed by a task running in the ForkJoinPool.commonPool() after it runs the given action.
There is another version of runAsync()
where you can pass an ExecutorService.
Thus: when the default commonPool() doesn't do what you want - then create your own ExecutorService instead.