【问题标题】:Interleaving two threads such that one of the thread gets null when called putIfAbsent of concurrentHashMap [closed]交错两个线程,使得其中一个线程在调用 concurrentHashMap 的 putIfAbsent 时为空 [关闭]
【发布时间】:2016-05-28 15:13:40
【问题描述】:

有人可以解释两个线程的交错,当两个线程在 Java 中调用 putIfAbsentConcurrentHashMap 时,其中一个线程为空?

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
  • 你读过它返回的内容吗?它并没有像许多人想象的那样返回新的价值。 "返回:与指定键关联的先前值,如果该键没有映射,则返回 null。(如果实现支持 null 值,则返回 null 还可以指示映射先前与该键关联 null。 )"

标签: java multithreading concurrenthashmap


【解决方案1】:

来自putIfAbsent的javadoc:

返回:
与指定键关联的先前值,如果该键没有映射,则为 null。

因此,第一个尝试将值放入映射的线程将始终返回 null

【讨论】:

  • 有趣的是,我已经多次查看该文本和 javadoc,但不知何故没有注意到它们不是 100% 相同...抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多