Java 关闭吊钩的最佳位置

Java 关闭吊钩的最佳位置,java,Java,我有一个main()方法,它调用一个线程类并启动一个线程。这个线程有一个while(threadBool)循环,所以我需要在退出程序时停止它(通过将threadBool设置为false)。放置addShutdownHook()的最佳位置在哪里?在main()方法中 或者在启动此线程的同一类中 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { public void run() {

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

或者在启动此线程的同一类中

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

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

最好的地方根本就不存在。由于程序意外中断,为了挽救可以挽救的东西,关闭挂钩只是最后的手段


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

当您退出System.exit时,它会杀死所有现有的用户线程。通过设置此标志,您试图关闭什么?为什么不创建线程池守护进程?
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

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