码迷,mamicode.com
首页 > 编程语言 > 详细

java并行之parallerlStream

时间:2019-11-26 19:59:18      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:bsp   for   fork   form   提高   arp   tps   ref   lam   

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

标签:bsp   for   fork   form   提高   arp   tps   ref   lam   

原文地址:https://www.cnblogs.com/z-sm/p/11937582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!