Using ThreadPoolExecutor in MultiThreaded applications.
Performing Asynchronous Tasks Where No Return Value Is Needed Using a Runnable Class Instance
Performing Asynchronous Tasks Where a Return Value Is Needed Using a Callable Class Instance
Defining Asynchronous Tasks Inline using Lambdas