Java进程数组并行

时间:2016-07-07 20:58:12

标签: java multithreading parallel-processing

我有一个数组,我想以不同的方式并行处理,以加快程序的整体运行时间。以下是按顺序执行所有操作时程序的样子。

public static void main(String[] args) {
    ArrayList<MyObject> array = getLongListOfObjects();
    ArrayList<MyObject2> array2 = new ArrayList<MyObject2>();
    for(MyObject object : array) {
         array2.add(firstProcessingMethod(object);
    }
    ArrayList<MyObject3> array3 = new ArrayList<MyObject3>();
    for(MyObject2 object : array2) {
         array3.add(secondProcessingMethod(object);
    }
    ArrayList<MyObject4> array4 = new ArrayList<MyObject4>();
    for(MyObject3 object : array3) {
         array4.add(thirdProcessingMethod(object);
    }
    for(MyObject4 object : array4) {
         System.out.println(object.toString());
    }
}

换句话说,我想开始使用firstProcessingMethod()处理数组,在第一次迭代后,我可以开始运行secondProcessingMethod()thirdProcessingMethod(),而数组的其余部分仍在通过{ {1}}。

1 个答案:

答案 0 :(得分:4)

使用Java 8,您可以使用Streams。

array.parallelStream()
    .map(ThisClass::firstProcessingMethod)
    .map(ThisClass::secondProcessingMethod)
    .map(ThisClass::thirdProcessingMethod)
    .forEach(System.out::println);