Thread Pool with ExecutorService
Creates a fixed thread pool to execute multiple tasks concurrently, demonstrating proper resource management with try-with-resources and shutdown handling.
Code
import java.util.concurrent.*;
import java.util.List;
public class ThreadPoolExecutor {
public static void main(String[] args) throws InterruptedException {
try (ExecutorService executor = Executors.newFixedThreadPool(4)) {
List<Callable<String>> tasks = List.of(
() -> { Thread.sleep(500); return "Task 1 done"; },
() -> { Thread.sleep(300); return "Task 2 done"; },
() -> { Thread.sleep(700); return "Task 3 done"; },
() -> { Thread.sleep(200); return "Task 4 done"; }
);
List<Future<String>> futures = executor.invokeAll(tasks);
for (Future<String> future : futures) {
try {
System.out.println(future.get());
} catch (ExecutionException e) {
System.err.println("Task failed: " + e.getCause());
}
}
}
System.out.println("All tasks completed");
}
}Report a problem with this exampleOpens a pre-filled issue on GitHub.