java并行之parallerlStream
Posted z-sm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java并行之parallerlStream相关的知识,希望对你有一定的参考价值。
java并行API演变:
- 1.0-1.4 中的 java.lang.Thread
- 5.0 中的 java.util.concurrent
- 6.0 中的 Phasers 等
- 7.0 中的 Fork/Join 框架
- 8.0 中的 parallelStream
parallelStream是java 8引入的,用于并行操作。其内部用了Fork/Join框架。
适用场景:CPU密集型
为何可比普通的多线程或线程池快:使用Fork/Join框架(ForkJoinPool.commonPool()),ForkJoinPool会自动将大任务拆解成无交集的子任务给不同线程并行执行,最后汇集结果。与线程池不同的是,还采取了工作窃取(work-stealing)算法,当有线程完成计算任务时会从其他线程的任务队列取任务来执行,从而整体上提高执行效率。
优点:代码简介,执行效率高;缺点:黑箱、不好跟踪调试
使用:尽可能用Stream API,多核情况下尽可能用parallelStream
参考资料:
parallelStream原理:https://github.com/CarpenterLee/JavaLambdaInternals/blob/master/7-ParallelStream.md
Stream API性能测试:https://github.com/CarpenterLee/JavaLambdaInternals/blob/master/8-Stream%20Performance.md
https://blog.csdn.net/u011001723/article/details/52794455
以上是关于java并行之parallerlStream的主要内容,如果未能解决你的问题,请参考以下文章