Java函数式编程四之并行化操作

本文探讨Java函数式编程中的并行化,解释并发与并行的区别,重点介绍数据并行化,通过模拟系统举例说明,并分析影响并行流性能的五大因素。
摘要由CSDN通过智能技术生成

Java函数式编程三

并行和并发

并发和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核 CPU 上。如果一个程序要运行两个任务,并且只有一个 CPU 给它们分配了不同的时间片,那么这就是并发,而不是并行。两者之间的区别如图:
在这里插入图片描述

本文主要讨论数据并行化。数据并行化是指将数据分成块,并为每块数据分配单独的处理单元。
先来看一个例子,计算一组字符串的总长度

//串行化计算
int sum = Stream.of("a", "abc", "ar", "abb")
                .mapToInt(str -> str.length())
                .sum();
System.out.println(sum);

//并行化计算
int sum1 = Stream.of("a", "abc", "ar", "abb")
        .parallel()//加入这个方法即能并行化处理
        .mapToInt(str -> str.length())
        .sum();
System.out.println(sum1);
9
9

并行化与串行化运行速度,取决与其运行的环境及数据特征

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值