import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ExecutorExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
for (int i = 0; i < 10; i++) {
System.out.println("Task 1 - " + i);
}
});
executor.submit(() -> {
for (int i = 0; i < 10; i++) {
System.out.println("Task 2 - " + i);
}
});
executor.shutdown();
try {
executor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class FutureExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Integer> future = executor.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(2000);
return 42;
}
});
try {
Integer result = future.get();
System.out.println("Result: " + result);
e.printStackTrace();
}
executor.shutdown();
}
}
ExecutorService executor = Executors.newFixedThreadPool(10);