メニューへ戻る
9章 スレッド
学習のポイント
複数の処理を並列的に動作させる「スレッド」のコーディング方法について理解しましょう。
1. スレッドとは? |
「スレッド」とは、「複数の処理を並行して行うことです」Javaでは、スレッドを扱うクラスが最初から用意されています。 |
2. スレッドクラス |
スレッドのクラスは、「java.lang.Thread」です。このクラスを利用してスレッド処理を実現します。また、別の方法で、インターフェイスを使用した「Runnable」を実装したクラスを定義してもスレッド処理を実現できます。 |
3. Threadクラス |
では、最初に「Thread」クラスを使用して見ましょう。
public class CThread extends Thread {
private int ino; //スレッドのNO
private int inttime; //メッセージを表示する間隔
//コンストラクタ
CThread(int ino,int inttime) {
this.ino = ino;
this.inttime = inttime;
}
//スレッドの処理内容の記述
public void run() {
for (int i=0; i < 10; i++) {
System.out.println("スレッドNO " + ino + " "
+ i);
try {
Thread.sleep(inttime);
} catch(InterruptedException ee) {}
}
}
}
上記のスレッドクラスでは、「runメソッド」で実際のスレッドの処理を記述しています。では。実際に動作させるクラスを作成します。
public class CMain1 {
public static void main(String[] args) {
//スレッドの生成(3個生成)
CThread sr1 = new CThread(1,500);
CThread sr2 = new CThread(2,300);
CThread sr3 = new CThread(3,700);
//スレッドの実行
sr1.start();
sr2.start();
sr3.start();
//スレッドの終了を待つ
try {
sr1.join();
sr2.join();
sr3.join();
} catch (InterruptedException ee) {} //何もしない
System.out.println("スレッドが終了しました。");
}
}
CMain1を実行させると、3個のスレッドが同時に実行される様子が分かります。 |
4. Runnableインターフェイス |
今度は、上記3と同様の処理を「Rannable」インターフェイスで実現して見ましょう。
public class CRunnable implements Runnable {
private int ino; //スレッドのNO
private int inttime; //メッセージを表示する間隔
//コンストラクタ
CRunnable(int ino,int inttime) {
this.ino = ino;
this.inttime = inttime;
}
//スレッドの処理内容の記述
public void run() {
for (int i=0; i < 10; i++) {
System.out.println("スレッドNO " + ino + " "
+ i);
try {
Thread.sleep(inttime);
} catch(InterruptedException ee) {}
}
}
}
上記のスレッドクラスでは、「runメソッド」で実際のスレッドの処理を記述しています。では。実際に動作させるクラスを作成します。
public class CMain2 {
public static void main(String[] args) {
//スレッドの生成(3個生成)
CRunnable sr1 = new CRunnable(1,500);
CRunnable sr2 = new CRunnable(2,300);
CRunnable sr3 = new CRunnable(3,700);
//スレッドクラスのコンストラクターへ渡します。
Thread srr1 = new Thread(sr1);
Thread srr2 = new Thread(sr2);
Thread srr3 = new Thread(sr3);
//スレッドの実行
srr1.start();
srr2.start();
srr3.start();
//スレッドの終了を待つ
try {
srr1.join();
srr2.join();
srr3.join();
} catch (InterruptedException ee) {} //何もしない
System.out.println("スレッドが終了しました。");
}
}
CMain2を実行させると、上記3と同様に実行される様子が分かります。 |
Javaプログラミングをもっと学びたいという方は「pafuイーランスクール」「Javaオブジェクト指向講座」よりご確認ください。また、書籍のみご希望の方は「こちら」よりご確認ください。
メニューへ戻る