スレッド(Thread)

一つのプロセス内で実行する複数の実行の流れがある場合、 それぞれの実行の流れをスレッドと呼びます。
Java Virtual Machineのmainメソッドが一つのスレッドで動作します。 このプログラムの流れと別の流れ(スレッド)を作る場合は、Threadクラスを使います。

java.lang.Object
 └java.lang.Thread

詳細は次のリンクで調べましょう。

Javaでスレッドを作るには、Runnableインターフェイスを実装したクラスを作ります。
Runnableインターフェイスは、Threadのクラス用のインターフェイスです。 このRunnableインターフェイスは、run() が宣言されています。 そしてThreadのクラスの内部では、startメソッドで、 Runnableインターフェイスのrun()メソッドを、別スレッドで実行するように作られています。
そこで、どのオブジェクトに作ったrun()メソッドを実行させるか指定する必要があります。
一般に、Threadのクラスのコンストラクタの引数で、 run() メソッドを持つオブジェクト指定して使います。

以下にその方法の実験的プログラムを示します。
ThreadTestクラスにテスト用スレッド(run())を作っています。
mainでこのオブジェクトを生成し、startメソッドで別スレットの run()をスタートしています。
それによりmainの繰り返し表示の間に、 別スレットの(run())の表示が割り込んで表示されるでしょう。
run()のメソッド終了が、そのスレッド終了です。

class ThreadTest implements Runnable
{
	//Runnableインターフェイスのメソッドをオーバーライドして作る
	public void run(){
		try	{
			System.out.println(" 別スレッド(mainと違う)流れ");
			Thread.sleep(2000);//2秒間待つ
			System.out.println(" 別スレッド(mainと違う)流れ");
			Thread.sleep(2000);//2秒間待つ
			System.out.println(" 別スレッド(mainと違う)流れ");
			Thread.sleep(2000);//2秒間待つ
			System.out.println(" 別スレッド(mainと違う)を終了!");
		}
		catch (InterruptedException e){
			System.out.println(" 割り込み例外:2000秒");
		}
	}

	public static void main1(String[] args) throws Exception{
		Runnable test = new ThreadTest();
		Thread thread = new Thread(test);// runメソッドを持つこのクラスを指定
		thread.start(); // 上記のrunスレッド起動
		for (int i = 0; i < 8; i++){
			Thread.sleep(800);//0.8秒間待つ
			System.out.println("mainの流れ:" + (0.8 * i) + "秒");
		}
		System.out.println("mainのスレッドを終了");
	}
}

以下が、上記プログラム実行のイメージです。実行ボタンで確認ください。

上記を確認後、このボタンをクリックください。→