Java 函数式编程 - 并行性
并行性是函数式编程的一个关键概念,其中一个大任务是通过分解较小的独立任务来完成的,然后这些小任务以并行方式完成,然后组合起来给出完整的结果。随着多核处理器的出现,该技术有助于加快代码执行速度。Java 具有基于线程的并行处理编程支持,但学习起来相当乏味,并且很难在没有错误的情况下实现。从 Java 8 开始,流具有并行方法,集合具有parallelStream() 方法以并行方式完成任务。请参阅下面的示例:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class FunctionTester { public static void main(String[] args) { Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 }; List<Integer> listOfIntegers = new ArrayList<>(Arrays.asList(intArray)); System.out.println("List using Serial Stream:"); listOfIntegers .stream() .forEach(e -> System.out.print(e + " ")); System.out.println(""); System.out.println("List using Parallel Stream:"); listOfIntegers .parallelStream() .forEach(e -> System.out.print(e + " ")); System.out.println(""); System.out.println("List using Another Parallel Stream:"); listOfIntegers .stream() .parallel() .forEach(e -> System.out.print(e + " ")); System.out.println(""); System.out.println("List using Parallel Stream but Ordered:"); listOfIntegers .parallelStream() .forEachOrdered(e -> System.out.print(e + " ")); System.out.println(""); } }
输出
List using Serial Stream: 1 2 3 4 5 6 7 8 List using Parallel Stream: 6 5 8 7 3 4 2 1 List using Another Parallel Stream: 6 2 1 7 4 3 8 5 List using Parallel Stream but Ordered: 1 2 3 4 5 6 7 8