Running asynchronous task and return void

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 ... ");
}

Or, we can write it using a lambda:

public static void printOrder() {

CompletableFuture<Void> cfPrintOrder
= CompletableFuture.runAsync(() -> {

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 ... ");
}
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.205.27