JAVA簡易講座 7

きょうからあなたもジャワ言人 99/10/21
by Kensaku Hattori


←前頁 次頁→

その7(アプレット3)

 今度の例題は、スレッドの扱いかたです。
説明がかなり長くなりましたが、がんばって読んで下さい。
スレッドの停止のさせかたが面倒なのでよく見ておいて下さい。
ついでに、アプレットへのパラメータの渡しかたも見ておいてね。
今回は、RdxApplet2クラスをさらに拡張(extends)して作成します。 本アプレットは、一定時間毎にロゴの色を変えます。

/**
    RDXアプレットプログラム
    指定時間(msec)毎に色を変えます
    HTML例↓
    <applet code="RdxApplet3.class" codebase="."
        width="320" height="120">
    <parameter name=interval value="5000">
    </applet>
    
    @author 服部建作
    @version 1.0 1999/10/18
*/
//アプレットを定義する為のパッケージ(必須)
import java.applet.*;
//描画関係のパッケージ
import java.awt.*;
//イベント関係のパッケージ
import java.awt.event.*;

public class RdxApplet3 extends RdxApplet2 implements Runnable{
    //変数宣言
    static int  interval = 5000;    //default 5秒間隔   
    volatile Thread changeThread;   //スレッドオブジェクト
    
    //動作間隔のパラメータを取得する為にオーバーライド
    public void init(){
        super.init();
        String param = getParameter("interval");
        if( param != null){
            interval = Integer.parseInt(param);
        }
    }
    //描画更新処理(ちらつきが気になる時は以下のコメントをとる)
    //public void update(Graphics g){
    //  paint(g);
    //}

    //Appletの表示が開始された時ブラウザ-から呼ばれる
    public void start(){
        //スレッドの生成
        changeThread = new Thread(this);
        changeThread.start();
    }
    
    //Appletが表示されなくなった時ブラウザ-から呼ばれる
    public void stop(){
        //割込みを通知する為にオブジェクト参照を作成
        Thread tempThread = changeThread;
        //スレッド停止を伝えるためnullをセット
        changeThread = null;
        //即時停止するよう割り込みをかける
        tempThread.interrupt();
    }
    
    //スレッドの実処理
    public void run(){
        Thread thisThread = Thread.currentThread();
        while( changeThread == thisThread){
            try{
                thisThread.sleep(interval);
            }catch( Exception e){
                System.out.println( e);
                continue;
            }
            ChangeColor();
        }
    }
}

コンパイルの仕方

パラメータについて

スレッドについて

volatileについて

ちらつき防止について

エラー処理について

←前頁 次頁→

スレッド(thread): JAVA オンラインマニュアル:

ご意見ご感想をお寄せ下さい。 hattori@kanda.rdx.co.jp