据我了解,这两个映射都旨在在多线程环境中工作。但是我对他们保证的功能感兴趣(即可用性,一致性)。
最佳答案
我相信他们不会使用读取锁定(依靠volatile
字段来确保读取能够看到其他线程的写入),并且在内部细分为多个段(基于预期的并发级别),这些段分布在各个段之间,每个使用独立的写锁。这样,如果它们恰好需要同时写入同一段,则从不读取块,而仅写入块。我不是专家。
至于保证,我不确定您要问什么。 ConcurrentMap
指定内存一致性保证:
内存一致性影响:与其他并发集合一样,在将对象作为键或值放入ConcurrentMap
中之前,线程中的操作发生在从另一个线程中ConcurrentMap
中访问或删除该对象之后的操作之前。 。