JAVA中并行流的使用场景

简介: JAVA中并行流的使用场景

JAVA Web开发大多数的工作是在MVC大的层次架构下写业务代码,在代码结构上会分为Controller,Service和Dao层,并且会在Service做大量的业务代码的判断,比如分页查询列表或者不分页查询列表,在Service层对于List列表遍历做一些字典翻译等赋值操作。JAVA8之前的遍历就是传统的for,While之类的,JAVA8以后多了个Stream的概念并且支持Lambda表达式的语法糖写法,于是很多同学都会特意的使用这种新特性。

传统的for写法:

List<Object>list=newArrayList<>();
for(inti=0,length=list.size();i<length;i++){
//do something}

Stream流的写法

List<Object>list=newArrayList<>();
list.parallelStream().forEach(s->{
//do something});

在此先不考虑使用Stream流里面的filter和sorted之类的新函数去做过滤和排序之类的功能。单就一个从数据库里查询出来的排序好的列表,也不做任何的过滤,仅仅是为了做缓存中的字典翻译这个功能,上述两种写法有性能上的巨大差别吗?大家可以测试一下,好像差别不大,仅仅是语法上的问题。于是我就去学习了一下,得出和总结出大概这样的场景采取考虑使用并行流:大量的且互相之间没有依赖的数据且性能很低需要通过并行技术利用多核多线程去优化以提升性能的情况。

通过上面的特点可以考虑一下,我们的程序中处理的数据是否是大量的数据,数据之间有没有要互相依赖的处理逻辑,执行的代码性能是否很差需要耗时很多。如果没有上述的问题,我认为传统的for循环写法不会让程序大跌眼镜。

目录
相关文章
|
6天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
9天前
|
存储 设计模式 分布式计算
Java中的多线程编程:并发与并行的深度解析####
在当今软件开发领域,多线程编程已成为提升应用性能、响应速度及资源利用率的关键手段之一。本文将深入探讨Java平台上的多线程机制,从基础概念到高级应用,全面解析并发与并行编程的核心理念、实现方式及其在实际项目中的应用策略。不同于常规摘要的简洁概述,本文旨在通过详尽的技术剖析,为读者构建一个系统化的多线程知识框架,辅以生动实例,让抽象概念具体化,复杂问题简单化。 ####
|
4月前
|
并行计算 Java 大数据
Java中的高效并行计算与多线程编程技术
Java中的高效并行计算与多线程编程技术
|
4月前
|
存储 Java 调度
线程操纵术并行策略问题之Java的并行编程优势问题如何解决
线程操纵术并行策略问题之Java的并行编程优势问题如何解决
|
4月前
|
安全 Java API
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
37 0
|
4月前
|
存储 运维 前端开发
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
52 0
|
4月前
|
安全 Java 数据处理
Java面试题:什么是Java中的Optional类及其使用场景?
Java面试题:什么是Java中的Optional类及其使用场景?
59 0
|
4月前
|
并行计算 算法 Java
Java面试题:解释Java中的无锁编程的概念,Java中的Fork/Join框架的作用和使用场景,Java中的CompletableFuture的作用和使用场景
Java面试题:解释Java中的无锁编程的概念,Java中的Fork/Join框架的作用和使用场景,Java中的CompletableFuture的作用和使用场景
34 0
|
4月前
|
存储 缓存 Java
Java面试题:解释Java中的内存屏障的作用,解释Java中的线程局部变量(ThreadLocal)的作用和使用场景,解释Java中的锁优化,并讨论乐观锁和悲观锁的区别
Java面试题:解释Java中的内存屏障的作用,解释Java中的线程局部变量(ThreadLocal)的作用和使用场景,解释Java中的锁优化,并讨论乐观锁和悲观锁的区别
51 0
|
4月前
|
算法 安全 Java
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
45 0