4

Thread クラスを呼び出してスレッドを開始する main() メソッドがあります。このスレッドには while(threadBool) ループがあるため、プログラムを終了するときに (threadBool を false に設定して) 停止する必要があります。addShutdownHook() を配置するのに最適な場所はどこですか? main() メソッド内

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

            public void run() {
                class.threadBool=false;
            }
        }));  

または、このスレッドを開始した同じクラスで

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

            public void run() {
                threadBool=false;
            }
        }));
4

1 に答える 1

13

最高の場所はどこにもありません。シャットダウンフックは、回収できるものを回収するためのプログラムの予期しない中断のため、最後の手段にすぎません。

代わりに、明確に定義されたエントリポイント、本体、および出口ポイントが存在するようにコードを整理する必要があります。その後、出口点でスレッドを停止できます。

于 2012-10-14T19:53:27.290 に答える