yucatio@システムエンジニア

趣味で作ったものいろいろ

JavaのパラレルストリームでforEachは並列実行されるか

結論

javaのパラレルストリームでforEachは並列実行される

コードを書いて確かめてみた

forEach内でsleepして動作を確かめてみた

List<String> list = List.of("A", "B", "C");

list.parallelStream()
    .forEach(s -> {
      System.out.println(s + ": start");
      System.out.println(s + ": " + Thread.currentThread().getName());
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      System.out.println(s + ": end");
    });

実行結果

B: start
C: start
C: ForkJoinPool.commonPool-worker-1
A: start
A: ForkJoinPool.commonPool-worker-2
B: main
B: end
A: end
C: end