我有一个调用 Thread 类并启动一个线程的 main() 方法。这个线程有一个 while(threadBool) 循环,所以我需要在退出程序时停止它(通过将 threadBool 设置为 false)。放置 addShutdownHook() 的最佳位置在哪里?在 main() 方法中

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

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

或在启动此线程的同一类(class)中
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

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

最佳答案

最好的地方根本就没有。由于程序意外中断以挽救可以挽救的内容,因此关闭 Hook 只是最后的手段。

相反,您应该组织您的代码,以便有一个清晰定义的入口点、主体和导出点。然后您可以在导出点停止您的线程。

10-06 08:55