首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConcurrentHashMap保证

ConcurrentHashMap保证
EN

Stack Overflow用户
提问于 2019-02-20 21:29:50
回答 1查看 134关注 0票数 0

我在一些服务类中有并发hashmap:

代码语言:javascript
复制
class MyClass implements Flushable {
   private volatile ConcurrentHashMap<Integer, Object> hashMap = ...

   public void add(int id, Object value) {
      hashMap.put(id, value);
   }

   @Override
   public void flush() throws IOException {
      hashMap.foreach((k, v) -> ...)
      hashMap.clear();
   }

}

我是否需要做一些额外的锁定以确保: 1. flush将处理所有映射条目(如果在foreach和clear之间调用add怎么办?) 2. clear不会删除foreach之后插入/更新的条目

在javadoc中,可以保证更新发生在读取之前。因此,据我所知,clear将阻止put调用,然而,为了达到我想要的效果,我需要一些额外的锁。

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 23:01:35

在你的例子中,你需要任何额外的锁定,这两个操作都应该被锁定,

方法也在段级别上进行锁定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54787500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档