2016-07-07 39 views
0

我有一個數組,我想以不同方式並行處理以加快程序的整體運行時間。以下是按順序執行所有操作時程序的外觀。並行Java進程數組

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()而陣列的其餘部分仍然通過firstProcessingMethod()去。

回答

4

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

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

什麼是ThisClass ::引用? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

它指的是包含這些方法的類。這有點像傳遞一個方法作爲參數。有關更多信息,請參見[此問題](http://stackoverflow.com/questions/20001427/double-colon-operator-in-java-8) – 4castle