1. 程式人生 > >JDK8 並行stream的適用場合

JDK8 並行stream的適用場合

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.多次測量輸出:50001500// 2.當業務的集合迭代處理過程中有較耗時操作時,利用多核CPUJDK8 並行api,能明顯提升效率; // 3.簡單集合迭代,無耗時操作不推薦stream } }