// Created on savesnippets.com ยท https://savesnippets.com/N3aDHbcopz5bgZ import java.util.*; import java.util.concurrent.*; class Demo { void example() throws Exception { // Java 19+ โ€” ExecutorService is AutoCloseable try (ExecutorService pool = Executors.newFixedThreadPool(4)) { // Submit a task that returns a value Future f = pool.submit(() -> { Thread.sleep(100); return 42; }); // Fire-and-forget pool.submit(() -> System.out.println("background")); // invokeAll โ€” submit a batch, wait for all List> tasks = List.of( () -> { Thread.sleep(100); return 1; }, () -> { Thread.sleep(100); return 2; }, () -> { Thread.sleep(100); return 3; } ); List> results = pool.invokeAll(tasks); for (var r : results) System.out.println(r.get()); System.out.println("answer: " + f.get(1, TimeUnit.SECONDS)); } // pool.close() auto-called โ€” waits for tasks to finish } }