猿问

简单地调用 parallelStream 是否并行运行任务?

我在互联网上看到了一堆例子,为了使用流 API 来做并行的事情,只需.parallelStream()像这样调用方法:


mySet

    .parallelStream()

    ... // do my fancy stuff and collect

但在其他情况下,我已经看到在线程池提交中使用了并行流,如下所示:


ForkJoinPool.commonPool().submit(() -> {

    mySet

        .parallelStream()

        ... // do my fancy stuff and collect

})

只是调用会parallelStream()执行多个并发线程中接下来发生的任何事情吗?就像在一些预先配置的线程池中一样。或者我是否必须创建我的线程然后使用并行流?


慕森王
浏览 179回答 1
1回答

哆啦的时光机

YesparallelStream并行运行。通常,当有一个长时间运行的并行流时,您不想在 上运行它,commonPool因为所有其他并行流也在使用它。顺便说一句,这是一个实现细节,因为流没有指定它们将用于并行处理的池,但是在当前实现下,您不应该使用ForkJoinPool.commonPool(),而是创建一个新池:ForkJoinPool pool = new ForkJoinPool(2);pool().submit(() -> {mySet    .parallelStream()    ... // do my fancy stuff and collect})
随时随地看视频慕课网APP

相关分类

Java
我要回答