並列処理を実装してみる
並列処理の実装方法には2つあり、それぞれ実装して挙動を確認してみた。for文を用いて2つの処理が並行して行われていることを確認している。
- 方法①java.lang.Threadクラスを継承したサブクラスを定義する
- 方法②java.lang.Runnableインタフェースを実現したクラスを用意し、そのインスタンスをThreadクラスのコンストラクタに渡す
方法①
class Thread1 extends Thread { @Override public void run() { for(int i=0;i<5;i++){ System.out.println("sub1["+i+"]"); } } } class Thread2 extends Thread { @Override public void run() { for(int i=0;i<5;i++){ System.out.println("sub2["+i+"]"); } } } public class Main { public static void main (String[] args) { Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(); t1.start(); t2.start(); System.out.println("main"); } }
実行結果
main
sub2[0]
sub1[0]
sub1[1]
sub2[1]
sub1[2]
sub2[2]
sub2[3]
sub1[3]
sub1[4]
sub2[4]
方法②
public class Main { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run(){ for(int i=0;i<5;i++){ System.out.println("sub1["+i+"]"); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run(){ for(int i=0;i<5;i++){ System.out.println("sub2["+i+"]"); } } }); t1.start(); t2.start(); System.out.println("main"); } }
実行結果
main
sub2[0]
sub2[1]
sub1[0]
sub2[2]
sub1[1]
sub2[3]
sub1[2]
sub2[4]
sub1[3]
sub1[4]
まとめ
並列処理の実装方法として提供されている2つの方法を実装し動かしてみた。ともに並行して行われていることは実行結果から分かっていただけるだろう。