ルーカスNoetzold:
私は、平行なものを行うためにストリームAPIを使用するためには、単に呼び出す、というインターネット上の例の束を見てきた.parallelStream()
このような方法を:
mySet
.parallelStream()
... // do my fancy stuff and collect
しかし、他のケースでは、私はこのように、スレッドプールのsubmition内部で使用されている並列ストリームを見てきました:
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
})