java - 简单地调用 parallelStream 是否并行运行任务?
问题描述
我在互联网上看到了一堆示例,为了使用流 API 来执行并行操作,只需.parallelStream()
像这样调用方法:
mySet
.parallelStream()
... // do my fancy stuff and collect
但在其他情况下,我看到在线程池提交中使用并行流,如下所示:
ForkJoinPool.commonPool().submit(() -> {
mySet
.parallelStream()
... // do my fancy stuff and collect
})
只是调用会parallelStream()
执行多个并发线程中接下来发生的任何事情吗?就像在一些预先配置的线程池或其他东西中一样。还是我必须创建我的线程然后使用并行流?
解决方案
是parallelStream
的,并行运行。
通常,当有一个长时间运行的并行流时,您不想在其上运行它,commonPool
因为所有其他并行流也在使用它。
这个顺便说一句是一个实现细节,因为流没有指定它们将用于并行处理的池,但在当前实现下你不应该使用ForkJoinPool.commonPool()
,而是创建一个新池:
ForkJoinPool pool = new ForkJoinPool(2);
pool().submit(() -> {
mySet
.parallelStream()
... // do my fancy stuff and collect
})
推荐阅读
- browser - 如何检测数据包丢失 GStreamer - webrtcbin(以及如何发送 PLI 或 FIR)
- android - 使用 ViewPager2 自定义选项卡布局
- java - Android Studio APP 构建成功但无法运行
- asp.net-core - Azure App Service 在通过 DevOps 管道部署后出现“503 Service Unavailable”
- python - 如何同时写入日志和打印到屏幕?
- asp.net-core - 在 Asp.Net 5 中获取 IIS 版本或其他 IIS 服务器变量?
- image - Flutter Web - 滚动对于大量图像非常滞后
- r - 使用 dplyr 匹配两个日期字段
- java - 在 Android (Java) 中,从包含当前用户电子邮件地址的文档中获取所有评论
- python - RuntimeError: input.size(-1) 必须等于 input_size。预期 200,得到 0 ---- PySyft / PyTorch / Federated Learning