【问题标题】:Block read operation of ConcurrentHashMap in multithreaded environment多线程环境下ConcurrentHashMap的块读操作
【发布时间】:2018-06-30 05:29:40
【问题描述】:

我有一个 ConcurrentHashMap。当线程 t1 对其进行写操作时,我希望线程 t2 不能对其进行任何读操作。然后应该阻止读取操作。我将如何实现这一目标?我无法使用 HashMap 并对其进行同步。

【问题讨论】:

  • 那你可以在 ConcurrentHashMap 本身上同步吗?
  • 那么使用 ConcurrentHashMap 没有任何意义。一个简单的 HashMap 就足够了。使用 ReadWriteLock 同步访问。 docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/…
  • 如果您不想同时使用ConcurremtHashMap,为什么要使用它?

标签: java collections


【解决方案1】:

ConcurrentHashMap 提供自己的同步,因此您不必显式同步对它的访问。

【讨论】:

  • 仅当您不需要任何原子复合操作时才适用,例如以原子方式更新两个条目,或以原子方式迭代地图。
猜你喜欢
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多