【发布时间】:2017-03-11 21:38:32
【问题描述】:
这里是详细信息。
- 一个线程写入地图,另一个线程读取地图。
- 密钥一旦插入就永远不会更新。
- 如果消费者线程在映射中没有找到该值,它可以自己计算该值。它不会找到 1% 的值,因为它们不会由生产者线程计算。
- 当消费者要求一个价值时,它应该尽快得到它。
HashMap 在这种情况下是否可以不进行同步工作?或者我将不得不使用ConcurrentHashMap?
【问题讨论】:
-
不,是的。 HashMap 不是线程安全的。因此同时写入和读取它是不安全的。
-
当然详细信息在描述中。否决愚蠢的标题。
-
因为你的“读者”也可以计算一个值,你可以让它用
computeIfAbsent把这个值放到地图中
标签: java multithreading hashmap concurrenthashmap