我在互联网上看到了一堆例子,为了使用流 API 来做并行的事情,只需.parallelStream()像这样调用方法:mySet .parallelStream() ... // do my fancy stuff and collect但在其他情况下,我已经看到在线程池提交中使用了并行流,如下所示:ForkJoinPool.commonPool().submit(() -> { mySet .parallelStream() ... // do my fancy stuff and collect})只是调用会parallelStream()执行多个并发线程中接下来发生的任何事情吗?就像在一些预先配置的线程池中一样。或者我是否必须创建我的线程然后使用并行流?
1 回答
哆啦的时光机
TA贡献1779条经验 获得超6个赞
YesparallelStream并行运行。
通常,当有一个长时间运行的并行流时,您不想在 上运行它,commonPool因为所有其他并行流也在使用它。
顺便说一句,这是一个实现细节,因为流没有指定它们将用于并行处理的池,但是在当前实现下,您不应该使用ForkJoinPool.commonPool(),而是创建一个新池:
ForkJoinPool pool = new ForkJoinPool(2);
pool().submit(() -> {
mySet
.parallelStream()
... // do my fancy stuff and collect
})
添加回答
举报
0/150
提交
取消