根据 ConcurrentMap Javadoc:



以上声明的含义是什么?以及它如何工作,因为get()中的ConcurrentHashMap方法没有阻塞(例如,与BlockingQueue比较)?

最佳答案

意思很简单。假设您有两段代码:

 a = new A();
 b = ...
 someConcurrentHashMap.put(b, whatever);

接着:
Whatever value = someConcurrentHashMap.get(b);
c = new C();

b是同一对象,并且这两段代码是由两个不同的线程执行的时,可以保证a = new A()c = new C()之前发生。

有关“之前发生的情况”的更多信息,请参见here

有关实现的详细信息,我建议您研究code源-包含的(非Javadoc!)注释,这些注释解释了此类的内部工作原理。

10-04 11:47
查看更多