首页 文章
  • 132 votes
     answers
     views

    迭代ConcurrentHashMap值是否安全?

    在ConcurrentHashMap的javadoc中如下: 检索操作(包括get)一般不会阻塞,因此可能与更新操作重叠(包括put和remove) . 检索反映了最近完成的更新操作的结果 . 对于诸如putAll和clear之类的聚合操作,并发检索可能反映仅插入或删除某些条目 . 类似地,Iterators和Enumerations在迭代器/枚举的创建时或之后的某个时刻返回反映哈希表状态的元素...
  • 2 votes
     answers
     views

    ConcurrentHashMap检索操作不带锁吗?

    根据Java文档 检索操作(包括get)一般不会阻塞,因此可能与更新操作重叠(包括put和remove) . 检索反映了最近完成的更新操作的结果 . 对于诸如putAll和clear之类的聚合操作,并发检索可能反映仅插入或删除某些条目 问题:假设一个线程t1正在更新一个键值对(称为x),然后其他线程t2来了并想要读取x,那么在t2开始时会有一个由x创建的副本c1,并且t2将从中读取复制c1
  • 15 votes
     answers
     views

    ConcurrentHashMap中的entrySet() . removeIf的行为

    我想使用ConcurrentHashMap让一个线程定期从 Map 中删除一些项目,并使用其他线程同时从 Map 中放置和获取项目 . 我在删除线程中使用 map.entrySet().removeIf(lambda) . 我想知道我可以对它的行为做出什么假设 . 我可以看到 removeIf 方法使用迭代器遍历 Map 中的元素,检查给定条件,然后在需要时使用 iterator.remove(...

热门问题