gpt4 book ai didi

java - 什么东西便宜 : Traversal using n iterators of a single ConcurrentHashMap or n instances of a HashMap

转载 作者:搜寻专家 更新时间:2023-11-01 02:33:04 26 4
gpt4 key购买 nike

想象一个生产者-消费者场景,线程 A 产生条目,一对多的其他线程消费它们。

为此,我将一堆条目传递给每个消费者线程。

这样做我问自己是否更便宜(主要是 cpu 利用率,次要是内存):

  • 为每个消费者线程提供一个单独的 HashMap 实例。将 Map 传递给一个消费者后,将创建一个新的 Map 实例并将其用于将下一个生成的条目传递给下一个线程

  • 使用单个 ConcurrentHashMap 并为每个消费者线程创建一个 Iterator 并将 Iterator 传递给清除 的线程Map - 这样每个 Iterator 都包含它自己的底层 Map View 。

你怎么看?是否可能有或多或少的通用答案?
或者它是否强烈依赖于某些变量,例如条目数、线程数等?
编辑:或者我应该使用其他类型的数据结构来更好地解决这类问题吗?

最佳答案

java concurrent 包为这个场景提供了一个数据结构。

@see java.util.concurrent.BlockingDeque

但是请做一些性能测试:因为结果在很大程度上取决于您的用例。 如果这只是微优化,那么:干净、易于理解、节省线程的方法会比没有影响的性能优化好得多。

关于java - 什么东西便宜 : Traversal using n iterators of a single ConcurrentHashMap or n instances of a HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4723056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com