首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有固定(通常为ConcurrentHashMap)数据结构的官方模式,并能够间隔地替换它?

是否有固定(通常为ConcurrentHashMap)数据结构的官方模式,并能够间隔地替换它?
EN

Stack Overflow用户
提问于 2013-08-29 06:51:30
回答 1查看 2.4K关注 0票数 2

我发现自己重复了

  1. 存储只写入数据结构的副本和只读不变的ConcurrentHashMap
  2. 读取器只从只读不可变的HashMap 无锁读取。
  3. 作者只编写带有锁的数据结构(另一个ConcurrentHashMap)。
  4. 每隔几分钟(取决于应用程序的需要),我切换只读数据结构,这是一个有点旧的只写数据结构。因此,这里不使用锁,并且在只读数据结构上使用易失性只标记。

在java /官方库中是否有一个已经发布的熟悉的模式和示例代码,这样我就不必自己创建这个模式了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-29 07:21:49

也许我不完全理解您的需求,但是为什么不对ConcurrentHashMap的一个实例进行读写呢?ConcurrentMap的全部要点是以线程安全的方式读取和写入线程之间的映射。你能解释一下为什么在你的情况下不能发生这种事吗?

只读不可变的ConcurrentHashMap <--这绝对没有意义。任何安全发布的Map实例(例如普通的旧HashMap)都可以安全地被多个线程读取。这里唯一的危险是保证只从Map中读取而不是写入。这种保证可以通过使用Collections.unmodifiableMap()或番石榴的ImmutableMap来实现。还值得一提的是,最好确保地图条目本身是不可变的。

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

https://stackoverflow.com/questions/18504072

复制
相关文章

相似问题

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