ExecutorService — Creating Threads with ExecutorService We covered in part I of this article what Threads are in Java, how we create them, what a Task is and the differences between using Callable and Runnable interfaces. Let us dive a bit deeper in the Concurrency API in which Java introduced the ExecutorService, which helps us create…