Async Programming in Java: Part I

As a backend engineer, we face situations to process the data asynchronously. Today let's see how it's done in java and various way to do it.

Starting from Thread, Runnable, Callable<T>, Future<T> (and its extended ScheduledFuture<T>), CompletableFuture<T>, and of course, ExecutorService and ForkJoinPool. We will see all of them, but one by one.