xl_echo编辑整理,交流学习请加1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!
在 Java 8 中, 集合接口有两个方法来生成流:
- stream() − 为集合创建串行流。
- parallelStream() − 为集合创建并行流。
串行流和并行流对比,如果在数据量比较少的情况下,串行流更快。而数据量大时并行流会更快。
package demo;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
public class JDKStrem {
public static void main(String[] args){
int size = 5000000;
List<String> uuisList = new ArrayList<>(size);
//生成500万个uuid
for (int i = 0; i< size; i++){
uuisList.add(UUID.randomUUID().toString());
}
parallelSorted(uuisList);
streamSorted(uuisList);
}
//并行排序
public static void parallelSorted(List<String> uuisList){
System.out.println("开始并行排序");
long startTime = System.nanoTime();//纳秒,更为精确
uuisList.parallelStream().sorted().count();//并行排序
long endTime = System.nanoTime();//纳秒,更为精确
long distanceTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime);
System.out.println("结束并行排序 耗时为 " + distanceTime);
}
//串行排序
public static void streamSorted(List<String> uuisList){
System.out.println("开始串行排序");
long startTime = System.nanoTime();//纳秒,更为精确
uuisList.parallelStream().sorted().count();//串行排序
long endTime = System.nanoTime();//纳秒,更为精确
long distanceTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime);
System.out.println("结束串行排序 耗时为 " + distanceTime);
}
}