public static void main(String args[]) throws Exception {
ConcurrentHashMap<byte[], Integer> dps =
new ConcurrentHashMap<byte[], Integer>();
System.out.println(dps.putIfAbsent("hi".getBytes(), 1));
System.out.println(dps.putIfAbsent("hi".getBytes(), 1));
}
印刷
null
null
为什么它不在1
第二行打印 a ?我已经阅读了语义,putIfAbsent
应该保证它可以工作。(注意:这是从一个大型并发程序中提炼出来的……如您所见,它现在是单线程的。)