startメソッドで新しいThreadインスタンスを作り、スレッドを実行します。Threadインスタンスを作るのは、
Thread test = new Thread(this);
ですが、変数testはメソッドの外で定義して、他のメソッドからもアクセスできるインスタンス変数にするので次の様になります。メソッドの外側で宣言した変数をインスタンス変数、メソッドの内側で定義した変数をローカル変数といいます。
Thread test = null;
test = new Thread(this);
括弧の中のthisはこのアプレット自身を表しています。runメソッドを動かすには
test.start();
とします。このstartメソッドはjava.lang.Threadクラスのstartメソッドです。機能を調べると、「このスレッドの実行を開始します。スレッドがすでに起動していた場合に例外が発生します。」とあります。testがnullの時のみThreadインスタンスを作成するようにすると、startメソッドは次の様になります。
Thread test = null;
public void start() {
if (test == null) {
// スレッドを実行
test = new Thread(this);
test.start();
}
}
同様にstopメソッドは次の様になります。
public void stop() {
if (test != null) {
// スレッドを止める
test.stop();
test = null;
}
}
これで、スレッドのスタートとストップが出来ました。ブラウザからstartメソッドが呼ばれてスレッドが動き出します。このスレッドで実行される処理はrunメソッドに書くのでした。
|