在多线程环境中,我正在 ConcurrentHashMap 实现上执行 get 和 put 操作。然而,结果却出乎意料。请找到下面的代码和输出。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public class Test {
private static final List<String> bars = Arrays.asList("1","2","3","4","5","6","7","8","9","10");
private static final String KEY = UUID.randomUUID().toString();
private static ExecutorService executorService = null;
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
executorService = Executors.newFixedThreadPool(2);
Map<String, AtomicInteger> map = new ConcurrentHashMap<>();
performMapOps(map);
executorService.shutdown();
try {
while (!executorService.awaitTermination(1, …Run Code Online (Sandbox Code Playgroud)