補講 3時間目


6時間目で使ったスレッドについて、詳しく説明します。


アプレット




スレッドの説明

イベントがなくても一定時間ごとに何らかの処理を行うには、新しくスレッドというクラスを使います。スレッドは、本来のイベント駆動型のクラスから全く独立して動作します。特殊なクラスだけに、これを使うための手順も少々変わっています。
やり方には、
Threadクラスをテンプレートとしたクラスを作る。
Runnableインターフェースを組み込んだクラスを作る。

の2種類があります。状況に応じてどちらかを選びます。
Threadクラスの説明
JAVAプログラムは、複数のスレッドを持つプログラムすなわち、マルチスレッドのプログラムとして作成することができます。プログラムをマルチスレッド化するには、Threadクラスを使用することにより実現できます。
マルチスレッドのプログラムは、Threadクラスから派生する新しいクラスを定義し、ユーザはスレッド化する処理をThreadクラスのrun()メソッドをオーバーライドして記述します。書式は以下の通りです。
class クラス名 extends Thread{
   public void run(){
       スレッド化する処理
   }
}
Threadクラスのコンストラクタ
Thread()新しいThreadオブジェクトを生成する。
Thread(Runnable target)targetのrun()メソッドを適用するThreadオブジェクトを生成する。

主なメソッドの種類
書式メソッド名機能
void start()start()メソッドスレッドを開始する。run()メソッドを呼び出す。
void stop()stop()メソッドスレッドを停止する。
void run()run()メソッドスレッドの処理内容になる。通常オーバーライドして、スレッド化する処理を記述する。スレッドが開始されると呼び出される。
void suspend()suspend()メソッドスレッドを一時停止する。
void resume()resume()メソッドsuspend()で停止されたスレッドを再開する。
static void sleep(long millis)sleep()メソッドスレッドをmillis秒休止する。

を使います。
(注)sleepメソッドは、例外としてInterruptedExceptionをthrowする場合があるので、sleepメソッド使用時には、例外処理をします。
Runnableインターフェースの説明
Threadクラスの派生クラスを作成せずに、Runnableインターフェースをimplementsしたクラスを作成することにより、マルチスレッドのプログラムを作成することができます。
Runnableインターフェースを使用することにより、run()メソッドのオーバーライドが行えます。

public class クラス名 extends Applet implements Runnable{
   public void run(){
       スレッド化する処理(オーバーライドする)
   }
}
スレッドのスタート
Runnableインターフェースをimplementsしたクラスを使用してスレッドをスタートさせるためには、Threadクラスのオブジェクトを作成して、start()メソッドを使用します。
Threadクラスのコンストラクタに、Runnableインターフェースをimplementsしたクラスのオブジェクトを引数として指定します。

Thread オブジェクト名 =new Thread(this);
   オブジェクト名.start();

4時間目に行く。

補講のページに戻る。

shimizu@eces.numazu-ct.ac.jp