jdk8增加了新的特性:Stream和parallelStream。
本文章主要说明使用parallelStream时应该注意的事项如下:
-
注意在parallelStream下操作同一个集合,需要使用线程安全的集合。如:Vector、WriteOnCopyArrayList、HashTable、ConcurrentHashMap等线程安全的集合。
-
注意parallelStream默认最大的并行线程数为【CPU线程数 - 1】,需要几点:1.考虑服务器CPU和内存存在其他应用或功能使用的情况;2.考虑单个处理中数据量是否比较大,如果并行线程数过多是否会增大内存压力,甚至导致内存溢出的情况。
在parallelStream之前指定最大并行线程数。
System.setProperty(“java.util.concurrent.ForkJoinPool.common.parallelism”, “指定最大并行线程数”);
示例如下:
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "8");
list.parallelStream().forEach(item-> {
log.info("{}", item);
});