import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class GFCConcurrentExample {
private static final int THREAD_POOL_SIZE = 4;
private static final int NUM_TASKS = 10;
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
ConcurrentHashMap<Integer, String> concurrentHashMap = new ConcurrentHashMap<>();
for (int i = 0; i < NUM_TASKS; i++) {
final int taskId = i;
executorService.execute(() -> {
String taskName = "Task-" + taskId;
concurrentHashMap.put(taskId, taskName);
System.out.println("Added task: " + taskName);
});
}
executorService.shutdown();
while (!executorService.isTerminated()) {
}
System.out.println("Task results:");
for (int i = 0; i < NUM_TASKS; i++) {
System.out.println(concurrentHashMap.get(i));
}
}
}