匿名クラスでスレッドを作成して実行したときにどのようにそのスレッドを安全に停止できるのかわかりませんでした。安全に停止させるための処理は、停止用のフラグを作成し、それを監視することで実現できるのですが、そのフラグを操作するメソッドを作成してもクラスが匿名なので、コンパイルが通りません。しかたないのでThreadを継承した内部クラスを作成しました。

スレッドを停止させたくなるような時は、大抵ループで長い処理が回ってるので、フラグを監視して、リソースを掴んでない時にブレークしてやれば安全に終了できます。下の例ではend()メソッドを呼ぶとフラグが立って終了します。

 class MyThread extends Thread{
    private int _end = false;
    public void run(){
        while(_end==false){
            /*do something*/
        }
    }
    public void end(){
        _end = true;
    }
 }

|New|Edit|Diff|History|Attach|Copy|Rename|
HTML convert time: 0.001 sec.