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<Integer> 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<Callable<Integer>> tasks = List.of(
() -> { Thread.sleep(100); return 1; },
() -> { Thread.sleep(100); return 2; },
() -> { Thread.sleep(100); return 3; }
);
List<Future<Integer>> 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
}
}
Create a free account and build your private vault. Share publicly whenever you want.