在同一段上并行读取和写入哈希映射大小写



我只想知道如果读取器和写入器线程访问ConcurrentHashMap的同一段会发生什么。

  • 情况1:当读取器线程首先读取值时
  • 情况2:当编写器线程更新值,而读取器线程获取值时

从JavaDocs(你可以搜索你的特定版本,但怀疑这种行为会改变(:

检索操作(包括get(通常不会阻塞,因此可能与更新操作(包括放置和移除(重叠。Retrievals反映最近完成的更新操作的结果坚持发作。(更正式的说法是给定的键带有与any(非null(的先发生后发生关系检索报告更新值的密钥。(对于骨料诸如putAll和clear之类的操作,并发检索可能反映仅插入或删除某些条目。

适用于您的问题:

情况1:当读取器线程首先读取值时。

  • 读取器将在即将到来的看跌期权之前读取最近的看跌期权值

情况2:编写器线程更新值,读取器线程获取值。

  • 编写器将执行更新。如果它在.get((之前完成了内部put,那么新的get将被检索。否则,.get((将看不到更新,并将在;情况1";会说,就好像同时发生的不是.put((

最新更新