jdk8-stream-并行流的使用

使用jdk的stream, 可以非常方便的将串行改为并行

1, 判断是否质数

    /**
     * 将一个stream改成简单的并行
     */
    @Test
    public void test1() {
        // 串行
        long count = IntStream.range(0, 100000).filter(this::isPrime).count();
        System.out.println(count);

        // 并行
        long count1 = IntStream.range(0, 100000).parallel().filter(this::isPrime).count();
        System.out.println(count1);
    }

    /**
     * 判断是否质数
     * @param num
     * @return
     */
    public Boolean isPrime(int num) {
        int tmp = num;
        if (tmp < 2) return false;
        for (int i = 2; Math.sqrt(tmp) >= i; i++) {
            if (tmp % i == 0) return false;
        }
        return true;
    }

可以看到, 调用了一个parallel() 就可以改为并行计算

2, 获取一个集合的并行流

 /**
     * 获取一个并行流
     */
    @Test
    public void test2() {
        List<JSONObject> objects = Lists.newArrayList();
        Stream<JSONObject> jsonObjectStream = objects.parallelStream();
    }

3, 使用并行排序

    /**
     * 并行排序
     */
    @Test
    public void test3() {
        int[] lists = new int[1000];
        Arrays.parallelSort(lists);
    }

 

posted @ 2018-05-28 15:00  bronk  阅读(5603)  评论(0编辑  收藏  举报