コメントをもう少し伸ばす必要があると感じています...
パラダイム\スタイルについて
それはおそらく最も注目に値する側面です。FPは、副作用を避けて手に入れることができるため、人気がありました。これは質問とは関係がないため、これから得られる長所と短所については深く掘り下げません。
ただし、 Iterable.forEach を使用した反復は FP に触発されたものであり、むしろより多くの FP を Java にもたらした結果であると言えます (皮肉なことに、純粋な FP では forEach はあまり使用されません。副作用)。
結局のところ、あなたが現在書いているのは、むしろ好み\スタイル\パラダイムの問題だと思います.
平行度について。
パフォーマンスの観点からは、foreach(...) よりも Iterable.forEach を使用することによる顕著な利点は約束されていません。
Iterable.forEach の公式ドキュメントによると:
すべての要素が処理されるか、アクションが例外をスローするまで、反復時に要素が発生する順序で、Iterable のコンテンツに対して指定されたアクションを実行します。
...つまり、暗黙の並列処理が存在しないことはかなり明確です。1 つ追加すると、LSP 違反になります。
現在、Java 8で約束されている「並列コレクション」がありますが、それらを使用するには、より明示的に使用する必要があり、それらを使用するために特別な注意を払う必要があります(たとえば、mschenk74の回答を参照)。
ところで: この場合、 Stream.forEachが使用されますが、実際の作業が並行して行われることは保証されません (基になるコレクションによって異なります)。
更新:一見するとそれほど明白ではなく、少し引き伸ばされているかもしれませんが、スタイルと読みやすさの観点には別の側面があります。
まず第一に、単純な古い forloops は単純で古いものです。誰もがすでにそれらを知っています。
2 つ目は、さらに重要なことです。おそらく、Iterable.forEach をワンライナー ラムダでのみ使用することをお勧めします。「本文」が重くなると、読みにくくなる傾向があります。ここから 2 つのオプションがあります - 内部クラス (yuck) を使用するか、単純な古い forloop を使用します。同じコードベースでさまざまな vays/styles が行われている同じこと (コレクションに対する反復) を見ると、人々はしばしばイライラしますが、これは事実のようです。
繰り返しますが、これは問題になる場合とそうでない場合があります。コードに取り組んでいる人々に依存します。