在 ConcurrentHashMap 中,我有以下两个查询?我已经阅读了 Segment 类源代码中的 javadoc 注释,但无法理解。
scanAndLockForPut 方法的功能是什么?
使用 scanAndLockForPut 而不是使用 lock() 方法获取特定段上的锁有什么好处?
从 javadoc 评论中,我发现 scanAndLockForPut 用于减少缓存未命中。什么是缓存未命中以及此方法如何减少它?
谢谢..
最佳答案
scanAndLockForPut
的要点或多或少是在等待段上的锁定时做一些有用的事情。特别是,它开始检查条目是否已经存在,在等待锁定时缓慢地遍历哈希桶,如果它到达桶的末尾,它会为要进入的值创建一个新条目。 (此外,遍历哈希桶会将我们关心的条目移动到缓存中,这意味着在成功获取锁后再次查看它们会更快。)
关于java - 在 ConcurrentHashMap 中,使用 scanAndLockForPut 而不是直接 lock() 方法来获取特定段上的锁有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27448337/