pafuイーランスクール 学んでできる

メニューへ戻る

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オブジェクト指向講座」よりご確認ください。また、書籍のみご希望の方は「こちら」よりご確認ください。

メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる