我有一个main()方法,它调用Thread类并启动一个线程。这个线程有一个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;
}
}));
答案 0 :(得分:13)
最好的地方无处可去。关闭钩子只是最后的努力,因为程序意外中断以挽救可以挽救的东西。
您应该组织代码,以便有一个干净定义的入口点,主体和出口点。然后,您可以在退出点停止线程。