Javaで8缶誰もがこれを処理する方法についての洞察を提供し、並列ストリームを使用したとき、私は同じ要求のためのさまざまなサイズの応答を取得していますか?

hisdudeness:

順番にリポジトリクラスを呼び出すことをサービスクラスを呼び出して、コントローラを次のように私のアプリケーション構造です。リポジトリ(objectRepo)は、オブジェクトのリストを返します。それはリポジトリから取得し、apiResponseWrapperクラスに変換したオブジェクトのリストスルーサービスクラス解析します。コントローラは、それを変更することなく、ユーザーにこのapiResponseWrapperを与えます。

私のサービスクラスでは、私は効果的にサンプルコードの下に変換コードを持っています:

List<Object> objectList = objectRepo.getList(paramMap);
List<Entity> entityList = new ArrayList<>();
objectList.parallelStream().forEach(object->{
//code to transform object
entityList.add(transformedObject);
});
return entityList;

parallelstreamは、上記のように使用されている場合は、私のAPIの応答の大きさは、まったく同じパラメータを使用して、連続した通話に変化し、さらに検査で特定の事業体は、これらの呼び出しの数の応答には存在しません。parallelStreamの除去に応答の大きさは同じままで、期待されるすべてのエンティティは、結果です。

私は、任意の特定の方法があるかどうかを知りたい/ガイドラインの任意のセットは、それがどのようなデータがドロップされずにparallelstreamを使用するために私を助けるだろう従うべき。

ユージン:

その...使用をしません。

List<Entity> entityList = objectList.stream()
          .parallel()
          .map(object -> transform to transformedObject)
          .collect(Collectors.toList())

すべての後entityList、あなたが複数のスレッドから更新することをスレッドセーフのコレクションではありません、これも不必要な副作用として、ドキュメントで推奨されていません。

また、非常に少数の例があるparallelパフォーマンスを向上させるでしょう、あなたが必要となる多くの意味のある効果を持っているオブジェクトのは。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=202302&siteId=1