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());
}