gpt4 book ai didi

java - 给程序时间来关闭线程但使用 System.exit 备份计划?

转载 作者:行者123 更新时间:2023-12-03 12:59:10 25 4
gpt4 key购买 nike

有时,Java 应用程序的系统进程不会完全关闭。这主要是因为一个或多个线程没有死掉。

可以调用:

System.exit(0);

但这会杀死所有线程。

我希望我的所有线程都能正确关闭,所以我不打算使用 System.exit。但有时由于环境的原因,一个或多个线程不会正确死亡。这会导致应用程序无法完全关闭并在后台徘徊,有时甚至会锁定资源。

我的第一个想法是编写一个 ExitWatcher,它在程序停止时启动,如果程序仍然存在,则在 10 秒后调用 system.exit。我很快发现 ExitWatcher 现在阻止程序关闭 ;-)

你如何给java程序时间正确关闭(即正确关闭所有线程)但同时有一个备份计划调用System.exit如果关闭时间太长?

最佳答案

当您不希望线程阻止程序退出时,您可以使用守护线程(因此在 setDaemon(true) 线程上使用 ExitWatcher 可以解决您的直接问题)。但是我怀疑你真的需要或想要一个 ExitWatcher,因为这样的情况通常可以通过适当的设计相对容易地防止。

正确的关闭程序包括中断处于 Activity 状态的线程(并设计它们以使它们在中断时表现良好),在必要时使用守护线程,正确关闭连接等。使用像 ExitWatcher 这样的机制更像是一种骇人听闻的方法,因为它表明您的程序在关机时并不总是表现良好。

关于java - 给程序时间来关闭线程但使用 System.exit 备份计划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48873039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com