Javaで並列処理。Streamインタフェースを使うと簡単です。
まずは、その1。並列で動くことを確認してみます。
Streamインタフェースを使って、並列処理をするサンプル その1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.Arrays; import java.util.List; public class ParallelStreamTest { public static void main(String[] args) { //文字列のリストを準備 List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); //並列処理で標準出力 list.parallelStream() .filter(t -> { System.out.println("filter :" + t); return true; }) .forEach(t -> { System.out.println("forEach:" + t); }); } } |
実行結果
リストの1~10が、filterメソッドとforEachメソッドで標準出力されます。
ちょっと長いですが、こんな感じ。
数が少ないのであまり面白くないですが、filterメソッド、forEachメソッドともに並列処理されていることがわかります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | filter :7 forEach:7 filter :6 forEach:6 filter :9 forEach:9 filter :10 forEach:10 filter :2 forEach:2 filter :8 forEach:8 filter :1 filter :4 forEach:1 filter :3 filter :5 forEach:4 forEach:5 forEach:3 |
サンプルの解説
通常は、List#stream()(Collection#parallelStream())を使ってストリームAPIへ持ち込みますが、
この代わりにList#parallelStream()(Collection#parallelStream())を使うと、並列処理になります。