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