parallelStream流和stream对比案例(复制可用)

本文通过实例比较了Java中的parallelStream和stream流在遍历1000个元素列表时的性能差异,指出parallelStream适用于数据处理耗时的任务,而stream则在保证线程安全和顺序性时更适用。
1、说明

案例分别通过parallelStream()流和stream()流对两个个大小为1000的list集合进行遍历,每次遍历花费时间至少为10毫秒,通过比较得出两个流哪位速度更快,相差结果相当大

废话不多说,直接上代码!

2、案例
package org.springblade;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class test {
	public static void main(String[] args) {
		List<String> objects = new ArrayList<>();
		List<String> objects2 = new ArrayList<>();
		//初始化1000
		for (int i = 0; i < 1000; i++) {
			objects.add("s");
			objects2.add("s");
		}

		//分别遍历计算时间
		long start = System.currentTimeMillis();
		objects.parallelStream().forEach(new Consumer<String>() {
			@Override
			public void accept(String s) {
                try {
                    Thread.sleep(10);//毫秒
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
		});
		System.out.println("并行流:"+(System.currentTimeMillis() - start));
		long start2 = System.currentTimeMillis();
		objects2.stream().forEach(new Consumer<String>() {
			@Override
			public void accept(String s) {
                try {
                    Thread.sleep(10);//毫秒
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
		});
		System.out.println("串行流:"+(System.currentTimeMillis() - start2));

	}
}

3、运行结果

在这里插入图片描述
结果说明:在此案例中执行1000次后并行流执行时间为2064ms,串行流为15926ms

4、使用场景说明
  • stream: 适用于避免线程安全问题、要求顺序执行、数据处理简单不耗时的任务;
  • parallelStream: 适用于不存在线程安全问题、不需要顺序性执行、数据处理比较耗时的任务;
5、废话

客户:查个搜索查半天,页面一直在转圈圈!

领导:怎么回事???你的接口为什么这么慢?

parallelStream在实际的使用中在特定的场景下的作用是非常大的,常见用于处理大量的数据,用的好了能少挨领导一顿骂,挽回客户的信心,加油!

6、补充

如果流了本身执行的并不是相当耗时的任务那么如只有几毫秒,那就正常用回stream流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值