目次> 第17章> 17.3 TOPUPPREVNEXT

17.3 Runnable インターフェース

通常のクラスを定義し、Runnable インターフェースを利用して マルチスレッドにすることができます。
簡単なマルチスレッドならば、この方法が便利です。
  1. Runnable を実装したクラスを定義し、 そのクラスの run メソッドに並行処理をしたい部分を記述する。
  2. そのクラスのインスタンスを生成する。
  3. そのインスタンスを Thread に渡して、スレッドを生成する。
  4. そのスレッドの start メソッドを呼び出す。
    この時点で、run に記述した部分が並行して走りだします。
Runnable インターフェースを用いる場合の骨組みは、以下の通りです。

パターン1   スレッドの生成と start の呼び出しを main メソッド内で行う

      public class MyClass extends xxx implements Runnable {
         ...
         public MyClass( ... ) {     // コンストラクタ
            ...
         }
         ...
         public void run() {

            ... 枝分かれして処理したい部分 ...

         }
         ...
         public static void main(String args[]){
           ...
           MyClass work = new MyClass( ... );     // インスタンスの生成
           Thread th1 = new Thread( work );       // スレッドの生成
           ...
           th1.start();                           // run から実行開始
           ...                                    // main メソッドも処理を継続
         }
      }

パターン2   スレッドの生成と start の呼び出しをコンストラクタ内で行う

      public class MyClass extends xxx implements Runnable {
         ...
         public MyClass( ... ) {     // コンストラクタ
            ...
           Thread th = new Thread( this );        // スレッドの生成
           th.start();                            // run から実行開始
         }
         ...
         public void run() {

            ... 枝分かれして処理したい部分 ...

         }
         ...
         public static void main(String args[]){
           ...
           MyClass work1 = new MyClass( ... );    // インスタンスが生成され、run から実行開始
           ...                                    // main メソッドも処理を継続
         }
      }

更新日:2004-11-08 TOPUPPREVNEXT