pac*_*man 3 java scala trie concurrenthashmap data-structures
我考虑了两个具有相似概念的集合 -ParHashMap来自 Scala 和来自 Java 的 ConcurrentHashMap。它们都具有相同的时间复杂度,并且都是线程安全和无锁的,但它们仅基于不同的概念——相应的特里和哈希表。这个推理导致了一个问题:为什么我们需要来自 Scala 的 ParHashMap 而有来自 Java 的 ConcurrentHashMap?
ConcurrentHashMap是线程安全的Map<>实现。如果您有多个线程同时访问它,它们将是同步的。
ParHashMap是一个平行集合。如果您在此处执行操作(如map(), filter(), aggregate()),Scala 将为您并行化它(类似于 Spark,但仅在单个 JVM 中)。
总而言之,ConcurrentHashMap提供同步线程以实现并发的原语,ParHashMap负责同步和执行。
编辑:请注意,ParHashMap它本身不一定是线程安全的。这个想法是从单个线程调用它的方法,并让并行数据结构本身处理并行性。
| 归档时间: |
|
| 查看次数: |
688 次 |
| 最近记录: |