補講 3時間目
6時間目で使ったスレッドについて、詳しく説明します。
アプレット
スレッドの説明
イベントがなくても一定時間ごとに何らかの処理を行うには、新しくスレッドというクラスを使います。スレッドは、本来のイベント駆動型のクラスから全く独立して動作します。特殊なクラスだけに、これを使うための手順も少々変わっています。
やり方には、
1 | Threadクラスをテンプレートとしたクラスを作る。 |
2 | 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