Java 正在执行一个;“同时减少”;当结果的类型为Map(不是ConcurrentHashMap)时是否有效?

Java 正在执行一个;“同时减少”;当结果的类型为Map(不是ConcurrentHashMap)时是否有效?,java,concurrency,Java,Concurrency,我正在阅读关于stream 减少、并发和排序部分令人困惑: 我已经在截图中说明了我的问题。简而言之,当结果类型为Map而不是ConcurrentHashMap时,使用并发约简是否有意义 提前谢谢 Map是一个接口,ConcurrentHashMap是一个实现。他们试图传达的一点是,实现应该能够处理并发写/存/放。它应该是线程安全的,因为它在并行使用时将从不同的线程访问。如果您有另一个同样是线程安全的实现,那么它也可以正常工作。Map是一个接口,ConcurrentHashMap是一个实现。他

我正在阅读关于
stream

减少、并发和排序部分令人困惑:

我已经在截图中说明了我的问题。简而言之,当结果类型为
Map
而不是
ConcurrentHashMap
时,使用并发约简是否有意义


提前谢谢

Map
是一个接口,
ConcurrentHashMap
是一个实现。他们试图传达的一点是,实现应该能够处理并发写/存/放。它应该是线程安全的,因为它在并行使用时将从不同的线程访问。如果您有另一个同样是线程安全的实现,那么它也可以正常工作。

Map
是一个接口,
ConcurrentHashMap
是一个实现。他们试图传达的一点是,实现应该能够处理并发写/存/放。它应该是线程安全的,因为它在并行使用时将从不同的线程访问。如果您有一个不同的实现,它也是线程安全的,也可以正常工作。

我想您已经了解了它的含义,它将帮助您理解这个概念

在这种情况下,您可以通过执行以下操作之一轻松找到返回类型

代码 表示确实使用了
ConcurrentHashMap

JDK源代码 您可以看到使用的实现是
ConcurrentHashMap

public static <T, K> Collector<T, ?, ConcurrentMap<K, List<T>>>
    groupingByConcurrent(Function<? super T, ? extends K> classifier) {
        return groupingByConcurrent(classifier, ConcurrentHashMap::new, toList());
    }
公共静态收集器

groupingByConcurrent(函数我想你已经能读懂它的意思了,它将帮助你理解这个概念

在这种情况下,您可以通过执行以下操作之一轻松找到返回类型

代码 表示确实使用了
ConcurrentHashMap

JDK源代码 您可以看到使用的实现是
ConcurrentHashMap

public static <T, K> Collector<T, ?, ConcurrentMap<K, List<T>>>
    groupingByConcurrent(Function<? super T, ? extends K> classifier) {
        return groupingByConcurrent(classifier, ConcurrentHashMap::new, toList());
    }
公共静态收集器

按并发分组(函数明白了。因此,
collect
方法将根据流和收集器的字符返回不同的
Map
实现。谢谢!明白了。因此,
collect
方法将根据流和收集器的字符返回不同的
Map
实现。谢谢!谢谢非常感谢!非常感谢!
public static <T, K> Collector<T, ?, ConcurrentMap<K, List<T>>>
    groupingByConcurrent(Function<? super T, ? extends K> classifier) {
        return groupingByConcurrent(classifier, ConcurrentHashMap::new, toList());
    }