JDK1.8新特性【之】串行流、并行流、工作窃取模式(Fork/Join)
1.串行流、并行流
- 串行流:为单线程执行
- 并行流:工作时会将任务,拆分为多个子任务,最终汇总数据得到结果
- 并行流 启动多线程数 默认为(CPU核数-1)
2.工作窃取模式( Fork/Join)
- 工作窃取模式 Fork/Join
- 并行流采取的是工作窃取模式,线程自身任务执行完毕后会去其他线程队列中获取最后一个任务,放进自己的队列> 里执行
- 如果碰到需要等待的情况,不会进行等待,而是直接去执行其他子任务
3.测试
- 打开任务管理器
- 注释并行流代码时:执行耗时30s,CPU 资源占用率提升了8%
- 注释串行流代码:执行耗时8s,CPU直接沾满 100%
4.完整源码
import java.util.stream.LongStream;
public class _Test {
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
long reduce = LongStream.rangeClosed(0, 100000000000L)
.sequential()
.reduce(0, Long::sum);
long l2 = System.currentTimeMillis();
System.out.println("串行流耗时:" + (l2 - l1) / 1000 + "s");
long l3 = System.currentTimeMillis();
long reduce1 = LongStream.rangeClosed(0, 100000000000L)
.parallel()
.reduce(0, Long::sum);
long l4 = System.currentTimeMillis();
System.out.println("并行流耗时:" + (l4 - l3) / 1000 + "s");
}
}
《目录:Java基础》
《目录:JDK1.8新特性》
《幕》
- 留白 —<老吉>
- ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀