[英]Using scala's ParHashMap in Java's project instead of ConcurrentHashMap
[英]Why do we need for ParHashMap from Scala while there is ConcurrentHashMap from Java
我考虑了两个具有类似概念的集合ParHashMap
和Java的ConcurrentHashMap。 它们都具有相同的时间复杂度,并且都是线程安全且无锁的,但是它们仅基于不同的概念-特里和哈希表。 这种推理导致了一个问题:为什么Java中有ConcurrentHashMap时,我们为什么需要Scala中的ParHashMap?
ConcurrentHashMap
是线程安全的Map<>
实现。 如果您有多个线程同时访问它,则它们将同步。
ParHashMap
是一个并行集合。 如果您在此处执行操作(例如map()
, filter()
, aggregate()
),Scala会为您并行化它(类似于Spark,但仅在单个JVM中)。
总而言之, ConcurrentHashMap
提供了用于并发同步线程的原语, ParHashMap
负责同步和执行。
编辑 :请注意, ParHashMap
本身不一定是线程安全的。 想法是从单个线程调用其方法,并让并行性由并行数据结构本身处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.