退出JVM时出现错误

  • 本文关键字:错误 JVM 退出 jvm
  • 更新时间 :
  • 英文 :


我正在研究这个需要加载本地库的应用程序。启动本机库加载的类的加载在与主线程不同的线程上运行。当发生错误(抛出错误)时,我期望vm终止,但在这种情况下它没有。当然,当我不能加载本机库时,我不能继续,因为这是应用程序的核心。我假设我的应用程序没有终止,因为主线程至少启动了3个线程。连接线程——侦听一个小部件是否已连接,然后通知侦听器它已连接或已断开,以及其他资源管理线程。

当jls说应用程序不应该尝试捕获错误时,我该如何结束我的应用程序?

为了正确回答您的问题,我需要了解有关您生成的其他线程的更多信息。可以将它们设置为守护进程类型的线程吗?如果不是,通常如何优雅地退出这些线程?

这是一种暴力方法(在加载本机库的线程中):

try {
    methodToLoadLibrary();
    doWhatYouNeedToDo();
} finally {
    System.exit(1);
}

,但这是假设你将退出整个进程,当这个线程终止。

如果你有一个方法可以调用使线程优雅地终止,你可以替换System.exit(1);调用:

Collection<Stoppable> sList;
for(Stoppable s : sList) {
    s.stop();
}

其中Stoppable是用于通信的接口,用于在这些线程上进行安全关闭。

还有一些不太干净的方法,比如在其他线程上调用Thread.stop

最新更新