threadの作成(継承)
スレッドを作成するにはjava.lang.Threadクラスを継承する必要があります。
以下に、スレッドクラスを継承したスレッド(MyThread)を作成します。runメソッドをオーバーライドしています。

public class MyThread extends Thread{
	public void run(){
		for (int i=0;i<10;i++){
			System.out.println("aa");
		}
	}
}
そして、このMyThreadクラスをインスタンス化して start() メソッドを呼び出すことにより run() メソッドが実行されます。
以下を見てください。

public class TEST {
    public static void main(String[] args){
        MyThread thread = new MyThread();
        thread.start(); // スレッドの実行
    }
}
この実行結果は以下のようになります。

aa
aa
aa
aa
aa
aa
aa
aa
aa
これはthread.start()を実行した段階で、MyThreadで定義したrun()メソッドが実行されるためです。
MyThreadクラスでは、run()メソッドをオーバーライドしています。
これでthreadの作成ができたわけですが、これではわかりにくいので以下にもう一つ例をあげます。

public class TEST {
    public static void main(String[] args){
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();
        thread1.start();
        thread2.start();
        System.out.println("test");
    }
}
この実行結果は、以下のようになります。
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
test
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
普通、thread1のrun()メソッドが実行され、次にthread2のrun()メソッドが実行され、最後にtestと出力されそうな気がします。
ところが実行結果を見ると、thread1のrun()メソッドが実行され、testと表示され、最後にthread2のrun()メソッドが実行されています。
これはスレッドが独立して動作するため、各スレッド間での同期がとれていないためこのような現象が起こります。

このように独立して動作するプログラムが複数存在するプログラムをマルチスレッドと言ったりします。

Back to top

Information