MRa*_*ser 4 java algorithm concurrency multithreading concurrenthashmap
想象一下生产者 - 消费者场景,线程A产生条目,一个到多个其他线程使用它们.
为此,我将一堆条目传递给每个消费者线程.
这样做我问自己它是否更便宜(主要是在cpu utlization方面,在内存中是次要的):
HashMap.在传递Map给一个使用者之后,Map将创建一个新的实例,并用于将下一个生成的条目传递给下一个线程要么
ConcurrentHashMap并Iterator为每个消费者线程创建一个并在传递Iterator给线程后清除Map- 以便每个Iterator包含其自己的底层视图Map.你怎么看?一个或多或少的通用答案可能吗?
或者它是否强烈依赖于一些变量,如条目数,线程数等?
编辑:或者我应该使用其他类型的数据结构,可以更好地解决这些问题?
java并发包为这种情况提供了一种数据结构.
@看到 java.util.concurrent.BlockingDeque
但是请做一些性能测试:因为结果非常依赖于你的用例.而如果这仅仅是微优化,比:干净,易于理解,线程保存方法会比优化性能要好得多影响内部消除.
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |