概要
Javaプログラム内でスレッド1を作成および制御するために使用されるクラスである。
Thread
クラスを使用することで、以下のような操作が可能となる。
- スレッドの作成
- スレッドの開始
- スレッドの制御
スレッドの作成
Thread
クラスを継承したクラスを定義することで、新しいスレッドを作成できる。スレッドを作成するには、継承したクラスで run
メソッドをオーバーライドし、スレッドが実行する処理を記述する。
スレッドの開始
スレッドを開始するには、Thread
クラスのインスタンスを作成し、start
メソッドを呼び出す。
start
メソッドは、スレッドを実行可能状態にし、run
メソッドを実行する。
スレッドの制御
Thread
クラスには、スレッドの実行を制御するためのメソッドが用意されている。
-
sleep
メソッド:スレッドを一定時間停止させることができる。 -
join
メソッド:スレッドの終了を待つことができる。
例
public class MyThread extends Thread {
@Override
public void run() {
// スレッドが実行する処理を記述
for (int i = 0; i < 5; i++) {
System.out.println("Thread: " + i);
try {
Thread.sleep(1000); // 1秒待機
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // スレッドを開始
// メインスレッドの処理
for (int i = 0; i < 5; i++) {
System.out.println("Main: " + i);
try {
Thread.sleep(1000); // 1秒待機
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
上記の例では、MyThread
というクラスを定義し、Thread
クラスを継承している。run
メソッドをオーバーライドして、スレッドが実行する処理を記述している。
main
メソッドでは、MyThread
クラスのインスタンスを作成し、start
メソッドを呼び出してスレッドを開始している。
実行結果
Main: 0
Thread: 0
Main: 1
Thread: 1
Thread: 2
Main: 2
Thread: 3
Main: 3
Thread: 4
Main: 4
上記の結果は、メインスレッドとスレッドが交互に実行されることを示している。メインスレッドがカウントを表示した後、スレッドがカウントを表示し、それぞれのスレッドは1秒間隔で繰り返し実行される。
どのスレッドが先に実行されるかはプログラムからは制御できず、JVMの実装やCPUのタイミングなどで決まる。
-
メソッドがスタック領域(メモリ領域)の出入りを何度も繰り返す一連の流れのこと。 ↩