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循环写法不会让程序大跌眼镜。