import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentExample {
public static void main(String[] args) throws InterruptedException {
ExecutorService executor = Executors.newFixedThreadPool(5);
ConcurrentHashMap<String, Future<Integer>> resultMap = new ConcurrentHashMap<>();
for (int i = 0; i < 10; i++) {
final int taskNumber = i;
Future<Integer> future = executor.submit(() -> {
return taskNumber * 2;
});
resultMap.put(String.valueOf(i), future);
}
executor.shutdown();
while (!executor.isTerminated()) {
Thread.sleep(100);
}
for(String key : resultMap.keySet()){
try {
System.out.println("Task " + key + " result: " + resultMap.get(key).get());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}