Luc*_*old 5 java parallel-processing concurrency java-stream
我在互联网上看到了一些例子,为了使用流API来做并行的东西,只需调用这样的.parallelStream()方法:
mySet
.parallelStream()
... // do my fancy stuff and collect
Run Code Online (Sandbox Code Playgroud)
但在其他情况下,我已经看到并行流在线程池子目录中使用,如下所示:
ForkJoinPool.commonPool().submit(() -> {
mySet
.parallelStream()
... // do my fancy stuff and collect
})
Run Code Online (Sandbox Code Playgroud)
只是调用parallelStream()执行多个并发线程中接下来的内容吗?就像在一些预配置的线程池或其他东西.或者我是否必须创建我的线程然后使用并行流?
是parallelStream和平运行.
通常当并行运行长流时,您不希望在其上运行该流,commonPool因为所有其他并行流也使用它.
这个btw是一个实现细节,因为流没有指定它们将用于并行处理的池,但是在当前实现中你不应该使用ForkJoinPool.commonPool(),而是创建一个新池:
ForkJoinPool pool = new ForkJoinPool(2);
pool().submit(() -> {
mySet
.parallelStream()
... // do my fancy stuff and collect
})
Run Code Online (Sandbox Code Playgroud)