September 2019
Intermediate to advanced
816 pages
18h 47m
English
User problem: Print a certain customer order.
Since printing is a process that doesn't need to return a result, this is a job for runAsync(). This method can run a task asynchronously and doesn't return a result. In other words, it takes a Runnable object and returns CompletableFuture<Void>; this is shown in the following code:
public static void printOrder() { CompletableFuture<Void> cfPrintOrder = CompletableFuture.runAsync(new Runnable() { @Override public void run() { logger.info(() -> "Order is printed by: " + Thread.currentThread().getName()); Thread.sleep(500); } }); cfPrintOrder.get(); // block until the order is printed logger.info("Customer order was printed ...\n");}
Or, we can write it ...