根据 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!)注释,这些注释解释了此类的内部工作原理。