当前位置:首页 > 科技  > 软件

解锁多核处理器的力量:探索数据并行化在 Java 8 Stream 中的应用

来源: 责编: 时间:2023-11-07 17:16:42 293观看
导读在 Java 8 中引入的 Stream 为集合数据的处理带来了现代化的方式,而数据并行化则进一步提升了处理速度,充分发挥了多核处理器的优势。本篇博客将详细介绍数据并行化在 Java 8 Stream 中的应用,以及如何利用并行流处理大

在 Java 8 中引入的 Stream 为集合数据的处理带来了现代化的方式,而数据并行化则进一步提升了处理速度,充分发挥了多核处理器的优势。本篇博客将详细介绍数据并行化在 Java 8 Stream 中的应用,以及如何利用并行流处理大量数据。LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

什么是数据并行化

数据并行化是指将任务分解成多个子任务,并将这些子任务分配给多个处理单元(如多个 CPU 核心)并行执行。在集合数据的处理中,可以将数据划分为多个小块,然后在不同的处理单元上并行处理,从而加快处理速度。LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

在大量数据处理上,数据并行化可以大量缩短任务的执行时间,将一个数据分解成多个部分,然后并行处理,最后将多个结果汇总,得到最终的结果LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

并行和并发

并发(Concurrency)

并发是指多个任务在同一时间段内交替执行。它可以在单个处理器上通过任务切换(上下文切换)实现,也可以在多个处理器上同时进行。在并发模式下,多个任务在微观上交替执行,但在某个时间段内只有一个任务在执行。这种模式通常用于提高系统的效率和响应能力,适用于 I/O 密集型任务,如网络通信、文件读写等。LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com


LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

并行(Parallelism)

并行是指多个任务在同一时刻同时执行,每个任务在不同的处理器核心上独立运行。与并发不同,并行是在宏观上实现多任务的真正同时执行。这种模式通常用于提高计算密集型任务的处理速度,如科学计算、图像处理等。LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com


LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

总结

并发关注任务之间的交替执行,是一种在时间上的重叠。LTl28资讯网——每日最新资讯28at.com

并行关注任务在同一时刻的同时执行,是一种在时间上的重合。LTl28资讯网——每日最新资讯28at.com

并发适用于提高系统效率和响应能力,适用于 I/O 密集型任务。LTl28资讯网——每日最新资讯28at.com

并行适用于提高计算速度,适用于计算密集型任务。LTl28资讯网——每日最新资讯28at.com

并行流的使用示例

Java 8 引入了并行流,它使得数据并行化变得非常容易。只需将顺序流转换为并行流,即可实现并行处理。以下是一个简单的示例代码:LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

public class MaxDemo {    public static void main(String[] args) {        List<Integer> numbers = new ArrayList<>();        numbers.add(1);        numbers.add(2);        numbers.add(3);        int sum = numbers.parallelStream().mapToInt(i -> i).sum();        System.out.println(sum);    }

在上述示例中,通过 parallelStream() 方法将顺序流转换为并行流,从而实现了并行处理。接着,我们对流进行了过滤和映射操作,最后计算了偶数的总和。LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

注意事项和适用场景

虽然并行流可以提升处理速度,但并不是在所有情况下都适用。不要陷入一个误区:并行一定比串行快。并行在不同的情况下不一定比串行快。影响并行性能有以下因素:LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

数据量

如果数据量太小,会直接影响到并行处理的性能。因为在并行内部实现涉及到 fork/join 的操作,这些操作的本身就存在性能的开销,只有当数据量很大的时候,使用并行处理才有意义LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

源数据结构

fork 时会对源数据进行分割,数据源的特性直接影响到 fork 的性能,从而导致并行流性能很慢LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

arrayList、array、IntStream.range,是最容易分割的,因为都支持随机读取LTl28资讯网——每日最新资讯28at.com

HashSet、TreeSet, 相对来说比较容易分割,但是因为内部数据结构,很难被平均分解LTl28资讯网——每日最新资讯28at.com

LinkedList、Streams.iterate、BufferedReader.lined 不容易分分割,因为长度未知,无法确定分在哪里进行分割LTl28资讯网——每日最新资讯28at.com

装箱拆箱

尽量使用基本数据类型,避免装箱和拆箱LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

CPU 核数

fork 产生的数量是与 CPU 核数相关,可用的核数越多,获取的性能提升越大LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

单元处理开销

花在流中每个元素的时间越长,并行操作带来的性能提升就越明显LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

并行流原理介绍

并行流的工作原理可以分为以下几个步骤:LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

数据切分:初始数据被分成多个小块,每个块包含一部分元素。LTl28资讯网——每日最新资讯28at.com

并行处理:各个处理器核心同时对不同的数据块执行相同的操作。LTl28资讯网——每日最新资讯28at.com

结果合并:各个处理器核心处理完成后,将结果合并为最终结果。LTl28资讯网——每日最新资讯28at.com

并行流在底层的实现是沿用 Java7 提供的 fork 和 join 分解合并框架实现的,fork 根据 cpi 核数进行数据分开,join 对各 forn 进行合并。实现过程如下图所示:LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

LTl28资讯网——每日最新资讯28at.com

总结

数据并行化是 Java 8 Stream 中的重要特性,可以显著提升大规模数据处理的速度。通过将顺序流转换为并行流,我们可以利用多核处理器的优势,实现高效的并行处理。然而,在使用并行流时需要注意线程安全和适用场景,以充分发挥其优势。在实际开发中,根据数据规模和操作类型的不同,合理使用并行流将为你的程序带来性能的提升。LTl28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17549-0.html解锁多核处理器的力量:探索数据并行化在 Java 8 Stream 中的应用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 基于Topic的消息发布与消费模式

下一篇: 有完美的 React 框架吗?三巨头之战:Remix、Next.js 和 Gatsby

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 小米公益基金会捐赠2500万元驰援北京、河北暴雨救灾

    8月2日消息,今日小米科技创始人雷军在其微博上发布消息称,小米公益基金会宣布捐赠2500万元驰援北京、河北暴雨救灾。携手抗灾,京冀安康!以下为公告原文
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
Top