JDK8 並行stream的適用場合
阿新 • • 發佈:2019-01-02
public class Test { public static void main(String[] args) throws Exception { //準備一個數據源集合,測試將集合元素拼接一個字元放入另一個集合 ArrayList<String> resourceList = new ArrayList<>(); for (int i = 0; i < 10; i++) { resourceList.add(i + ""); } //普通處理。。。。。。。。。。。。。。。。。。。。。。。。。。。long t1 = System.currentTimeMillis(); ArrayList<String> s1 = new ArrayList<>(); for (String s : resourceList) { Thread.sleep(500);//模擬此處有0.5s的其它操作 s1.add(s + "普通測試"); } long t2 = System.currentTimeMillis(); //JKD8 parallelStream處理。。。。。。。。。。。。。。。。。。。long t3 = System.currentTimeMillis(); List<String> s2 = resourceList.parallelStream().map(e -> { try { Thread.sleep(500);//模擬此處有0.5s的其它操作 } catch (InterruptedException e1) { e1.printStackTrace(); } return e + "Stream測試"; }).collect(Collectors.toList()); long t4 = System.currentTimeMillis(); System.out.println(t2 - t1); System.out.println(t4 - t3); //結論:1.多次測量輸出:5000:1500; // 2.當業務的集合迭代處理過程中有較耗時操作時,利用多核CPU及JDK8 並行api,能明顯提升效率; // 3.簡單集合迭代,無耗時操作不推薦stream } }