Guava MapMaker和JDK ConcurrentMap是否使用读/写锁?

时间:2011-07-29 05:57:07

标签: java concurrency guava

据我所知,这两张地图都设计用于多线程环境。但是,他们保证了哪些功能(即可用性,一致性)。

1 个答案:

答案 0 :(得分:2)

我相信他们不使用读锁(依赖volatile字段来确保读取看到来自其他线程的写入)并且内部细分为若干段(基于预期的并发级别)条目分布在每个条目中,每个条目使用与其他条目分开的自己的写锁定。这种方式读取永远不会阻塞,只写块,如果它们碰巧需要同时写入同一段。我虽然不是专家。

就保证而言,我不确定你在问什么。 ConcurrentMap指定内存一致性保证:

  

内存一致性效果:与其他并发集合一样,在将对象放入ConcurrentMap作为键或值之前的线程中的操作发生在访问之后的操作之前或从另一个帖子中的ConcurrentMap中删除该对象。