如果多个线程写入单个映射,则使用哪个映射实现

suj*_*ith 2 java multithreading synchronization dictionary concurrenthashmap

在我的应用程序中,我将使用Map.

  • 多个线程将数据写入此映射.写操作太多了.
  • 但是,在每次写入期间,馈送到地图的数据都具有不同的密钥.
  • 不会在应用程序的任何位置读取地图中的数据.
  • 偶尔,内容将被转储到文件中.

我想知道以下内容:

  1. 在这种情况下,是否需要同步写入方法?
  2. ConcurrentHashMap是否适合我的需求?
  3. 如果没有,在这种情况下使用哪种正确的Map实现?

Lui*_*oza 7

关注以下几点:

  • 在每次写入期间,馈送到地图的数据具有不同的密钥

  • 不会在应用程序的任何位置读取地图中的数据

你根本不需要Map.我假设当你声明地图中的数据不会被读取时,你的意思是你没有这样做map.get(someKey),而是你将遍历整个地图以将数据存储在文件中(或者你使用的任何数据源) ).

这点:

  • 偶尔将内容转储到文件中

强化了上面的建议.

着眼于这一点:

  • 多个线程会将数据写入此映射.写入操作太多.

最好的建议是使用a BlockingQueue.作为实现,您可以使用LinkedBlockingQueue.

如果您从Map使用Java同步转储数据并希望/需要以a的形式恢复此数据Map,则使用a ConcurrentHashMap.如果这不是您的用例的一部分,因为您将通过其他方式从文件中读取数据,那么请避免使用Map和使用BlockingQueue.