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

    }
}

猜你喜欢

转载自blog.csdn.net/qq_39506978/article/details/80270061