为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2021-08-25 10:11:06
我在互联网上看到了一堆例子,为了使用流 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

})


查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信