Java8---并行流
来源:互联网 发布:java void方法结束 编辑:程序博客网 时间:2024/05/19 23:16
1、回顾jdk1.7的fork/join
工作窃取算法:线程维护一个双端任务队列,一个线程自己队列的任务执行完毕,到其他线程的队尾窃取一个任务执行。
fork/join使用过程:
1.创建一个继承RecursiveAction/RecursiveTask的ForkJoinTask类,并实现里面的protected compute方法
2.创建一个ForkJoinPool线程池
3.创建一个任务对象
4.调用线程池的invoke方法或者submit方法 提交task
5.关闭线程池 shutdown
2.Java8并行流
Java7中的fork/join在数据量大、拆分合理的情况下效率要高于串行过程,但Java8提供的并行流可以更高效的完成,而且实现简单,还是以1加到100亿为例子。
Java8的parallel的底层也是依照fork/join模式完成的,这里的优于我们在Java7中写的例子,可能是我们compute部分不够优化
public static void main(String[] args){long start=System.currentTimeMillis();Long sum=LongStream.range(0,10000000000L).parallel().reduce(0,Long::sum);System.out.println(sum);long end=System.currentTimeMillis();System.out.println(end-start);}
3.Java8 通用池
Java8为ForkJoinPool增加了通用池功能
ForkJoinPool commonPool() 该方法返回一个通用池,通用池状态不会受shutdown或者shutdownNow影响,如果执行System.exit肯定会终止。 getCommonPoolParallelism返回通用池的并行级别。
0 0
- java8并行流操作
- Java8---并行流
- java8 并行流使用
- Java8--并行流
- java8实战六:并行流
- Java8系列--并行流与并行流的性能测试
- java8与并行
- java8与并行
- Java8-流-用流收集数据和并行流
- JAVA8新特性[第五季]-并行流与串行流
- Java8 串行流和并行流的执行效率比较
- Java8新特性——并行流parallelStream
- 在使用java8并行流的时候的一点问题
- 详解Java8特性之Stream API并行流
- 详解Java8特性之Stream API并行流
- Java8新特性之并行流(三)
- java8,你应该了解的新特性(并行流优化篇)
- java8新特性:Stream多线程并行数据处理
- ZOJ Problem Set
- [svn] 常用命令
- C++概念性知识点之const限定符
- 关于链表
- 框架模式-观察者模式
- Java8---并行流
- 继承
- Python 列表排序方法reverse、sort、sorted详解
- 浏览器提供的对象
- 【单例深思】Java 单例模式全解
- 欢迎使用CSDN-markdown编辑器
- CSS3 精华一页纸
- caffe非图像数据转换为lmdb
- SpringMVC中使用Interceptor拦截器