2章Thread編です。
本編では、Threadクラスを継承したサブクラスを作成することにより、マルチスレッド処理を簡単なサンプルコードで実践します。
1章Runnable編を読んでなくても十分理解できる内容となっております。
詳しい理屈は置いといて、Threadクラスを用いてマルチスレッド処理を体感したい方は是非読んでください。
- 目次
- 手順① Threadクラスを継承したサブクラスを作成します。
- 手順② スレッドの呼び出し
- 実行結果確認
手順① Threadクラスを継承したサブクラスを作成します。
Threadクラスを継承したサブクラスSubThreadを作成し、runメソッドをオーバーライドして、
スレッドが呼び出されたときに実行したい処理を記述します。
今回はfor文が実行されるたびにコンソールに文字を出力し、スレッドを1秒間停止するという処理を記述します。
//Threadクラスを継承したサブクラスを作成
class SubThread extends Thread {
//startメソッドが呼ばれた際に実行される処理
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("SubThreadクラスのrun:" + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
手順② スレッドの呼び出し
①で実装したrunメソッドを呼び出すには①のクラスのインスタンスを作成し、startメソッドを呼び出します。
また、Mainクラスでも同じく、for文が実行されるたびにコンソールに文字を出力し、スレッドを1秒間停止するという処理を記述します。
//スレッド処理を呼び出すクラス
class Main {
public static void main(String[] args) {
//Threadクラスを継承したクラス(SubThread)でインスタンスを生成
Thread thread2 = new SubThread();
//スレッド処理を開始(別スレッドで実行される)
thread2.start();
//メインスレッドで実行
for (int i = 0; i < 3; i++) {
System.out.println("Mainクラス:" + i);
//実行ごとに1秒間スリープ
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
実行結果確認
メインクラスのスレッドとは別にThreadクラスを継承したSubThreadクラスのスレッドが同時に処理を進めていることが確認できます。
次回はマルチスレッド処理3章~Executor編~です!