単に呼び出すparallelStreamは、並行してタスクを実行していますか?

ルーカス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
})

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=179664&siteId=1
おすすめ