java stream()和parallelStream()使用
36、java stream()和parallelStream()的区别:
stream(): 是串行执行,按照顺序执行
parallelStream():是并行执行,异步执行,多线程,并且使用的线程池是ForkJoinPool.common,可以通过设置-Djava.util.concurrent.ForkJoinPool.common.parallelism = N来调整线程池的大小;
原理:将一个大任务切分成多个小任务,这表示每个任务都是一个操作
stream串行操作:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
list.add("fff");
list.stream().forEach(e->{
System.out.println(Thread.currentThread().getName()+"----"+e);
});
}
输出:
parallelStream并行操作:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
list.add("fff");
// list.stream().forEach(e->{
// System.out.println(Thread.currentThread().getName()+"----"+e);
// });
list.parallelStream().forEach(e->{
System.out.println(Thread.currentThread().getName()+"----"+e);
});
}
输出:
总结:
串行: 再在可能存在共享资源、线程安全等问题的时候使用
并行: 在无线程安全问题的前提下,并且单纯的数据处理的时候使用
