我有一个数组,我想以不同的方式并行处理,以加快程序的整体运行时间。以下是按顺序执行所有操作时程序的样子。
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}}。
答案 0 :(得分:4)
使用Java 8,您可以使用Streams。
array.parallelStream()
.map(ThisClass::firstProcessingMethod)
.map(ThisClass::secondProcessingMethod)
.map(ThisClass::thirdProcessingMethod)
.forEach(System.out::println);