Executor ExecutorService and Thread pools
Retrieving value from computation - Callable
submit vs execute exception handling differences
Fire and Forget - Runnable Tasks
Use cases for different types of concurrency constructs
Wait for completion of all tasks in ExecutorService
Use cases for different types of ExecutorService
Scheduling tasks to run at a fixed time after a delay or repeatedly