Java8-Lambda编程[5] 并行与并发

串行,即按序执行每个线程的任务会使程序效率很低下,与之相对的是并行与并发。并行是指多(核)cpu同时处理多个线程,每个cpu单独负责一个线程,有多少个cpu,就可以并行的执行多少线程。而并发是指多个线程在宏观(相对于较长的时间区间而言)上表现为同时执行,非并行的并发由一个cpu通过轮流执行每个线程的一部分来实现。下图是我自己用画图做的,感觉还比较直观。 并行-并发

我们之前很多地方用到了流操作来对集合进行遍历操作。默认情况下流是串行的,效率较低。为了提高流的效率,可以将串行流变成并行流,只需要调用一下parallel方法即可:

//并行
Stream.iterate(1,i->i+1)
        .limit(1000_000)
        .reduce(0,Integer::sum);

从1到100万进行累加,测试用时272ms,而当累加次数达到10亿时,耗时便增加到了41s多,可以说是很耗时了,相比之下并行的写法只用了130ms,累加10亿次时,共花费了???????

未完待续 不知道怎么存草稿