多处理核心和专业算法在全球范围内并行流利,提高了大规模集合并行处理的效率。实战中,有 8 并行流计算用于计算个内核的计算机 100 万整数的总和比串行方法快 10 倍。
如何在全局范围内提高效率?
简介
并行流是一种 Java 8 引入的强大特性允许我们平行处理集合元素。在某些情况下,平行流量的使用可以显著提高性能。本文将讨论整体平行流量以及如何在实际战斗中提高效率。
全局并行流
并行通过全局范围 java.util.concurrent.ForkJoinPool.commonPool() 线程池执行并行任务。默认情况下,该线程池创建了与处理器内核数相同的线程数。
提高效率的实战案例
假设我们有一个包含 100 大型列表有1000个整数。我们想计算列表中所有数字的总和。
串行方式:
int sum = 0; for (int i : list) { sum += i; }
并行方式:
int sum = list.parallelStream() .reduce(0, (a, b) -> a + b);
结果:
在具有 8 在一台内核计算机上,串行方法大约需要时间 5 秒,并行方法只花费约 0.5 秒。
为什么并行流更快?
多核计算机并行流更快的原因有几个:
- 内核采用多种处理方法
- 减少了与主线程的交互
- 使用专业的任务盗窃算法
最佳实践
使用并行流时应注意以下最佳实践:
- 对大型集合而言,并行流更有效。
- 如果元素的处理涉及到大量的阻塞操作(如 I/O),并行流可能没有帮助。
- 线程安全,确保收集操作。
结论
全球并行流为多核计算机提供了提高效率的有力工具。对于大型集合和轻量级任务,并行流的使用可以显著提高性能。
以上是如何提高全球并行流效率的详细内容。请关注图灵教育的其他相关文章!