How do you use ExecutorService with a simple code example?

ExecutorService is a framework from the java.util.concurrent package that simplifies the execution of asynchronous tasks in Java. By managing a pool of threads, it allows you to execute tasks independently, making it a crucial tool for multithreading applications.


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExecutorServiceExample {
    public static void main(String[] args) {
        // Create a thread pool with a fixed number of threads
        ExecutorService executorService = Executors.newFixedThreadPool(3);

        // Submit tasks for execution
        for (int i = 0; i < 5; i++) {
            final int taskId = i;
            executorService.submit(() -> {
                System.out.println("Task " + taskId + " is running");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
                System.out.println("Task " + taskId + " completed");
            });
        }

        // Initiate an orderly shutdown
        executorService.shutdown();
    }
}
    

ExecutorService Java Concurrency Thread Pool Asynchronous Execution