社会人のメモ帳

忘れたくないことアレコレ

【第3週】第3章:並列処理をとにかく動かしてみる【Java Gold合格へ向けて】

PREV | LIST | NEXT

並列処理を実装してみる

並列処理の実装方法には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つの方法を実装し動かしてみた。ともに並行して行われていることは実行結果から分かっていただけるだろう。