【问题标题】:Concurrently update list [duplicate]同时更新列表[重复]
【发布时间】:2017-10-16 11:57:15
【问题描述】:

我有一个将要更新的帐户列表 - 不太频繁 ~ 每天 1-2 次。
将定期对此数据进行“包含”查找。
理想的数据结构应该是 ConcurrentLinkedList ,但不幸的是它并不存在。
CopyOnWriteArrayList 是唯一的首选选项吗?

【问题讨论】:

  • 嗨,为什么您不考虑首先查找的某种树或哈希映射数据结构
  • CopyOnWriteArrayList 听起来非常适合您的用例。你有什么反对意见?
  • 您可能正在寻找 Set set = Collections.newSetFromMap(new ConcurrentHashMap());

标签: java java.util.concurrent


【解决方案1】:

如果您主要阅读,为什么需要并发数据结构。相反,您可以使用 HashSet 或 HashMap。它会使阅读速度更快。它更新的频率太低了,你可以明确地同步写作部分。

【讨论】:

  • 这似乎是错误的,因为一个线程写入另一个线程时不应该读取陈旧数据。
  • 但它的更新频率很低,您可以使用锁明确地处理它。正确的 ?。此外,在您的情况下,您的阅读性能应该更快,List 的包含复杂度为 o(n)。
  • 那么你必须单独实现读/写锁而不是显式锁,其中多个线程可以读取。可以设置可以使用 Set set = Collections.newSetFromMap(new ConcurrentHashMap());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 2016-05-30
  • 2013-03-26
相关资源
最近更新 更多