像上面所说的,流操作可以是顺序的,也可以是并行的。顺序操作通过单线程执行,而并行操作则通过多线程执行。 

下面的例子就演示了如何使用并行流进行操作来提高运行效率,代码非常简单。 

首先我们创建一个大的list,里面的元素都是唯一的: 

Java代码 
  1. int max = 1000000;  
  2. List<String> values = new ArrayList<>(max);  
  3. for (int i = 0; i < max; i++) {  
  4.     UUID uuid = UUID.randomUUID();  
  5.     values.add(uuid.toString());  
  6. }  

现在,我们测量一下对这个集合进行排序所使用的时间。 

顺序排序 

Java代码 
  1. long t0 = System.nanoTime();  
  2.    
  3. long count = values.stream().sorted().count();  
  4. System.out.println(count);  
  5.    
  6. long t1 = System.nanoTime();  
  7.    
  8. long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);  
  9. System.out.println(String.format("sequential sort took: %d ms", millis));  
  10.    
  11. // sequential sort took: 899 ms  

并行排序 

Java代码 
  1. long t0 = System.nanoTime();  
  2.    
  3. long count = values.parallelStream().sorted().count();  
  4. System.out.println(count);  
  5.    
  6. long t1 = System.nanoTime();  
  7.    
  8. long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);  
  9. System.out.println(String.format("parallel sort took: %d ms", millis));  
  10.    
  11. // parallel sort took: 472 ms  

如你所见,所有的代码段几乎都相同,唯一的不同就是把stream()改成了parallelStream(), 结果并行排序快了50%。 

延伸阅读

向着Java前进-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训向着Java前进