mer*_*114 1 java multithreading jvm
我有一个Java程序,在高层次上看起来像这样:
public static void main(final String[] args) {
Thread t1 = new ComplicatedThread1();
Thread t2 = new ComplicatedThread2();
Thread t3 = new ComplicatedThread3();
t1.start();
t2.start();
t3.start();
}
Run Code Online (Sandbox Code Playgroud)
每个线程都包含很多代码,这些代码不是我编写的.一个线程中可能有几个子线程.如果只有一个线程崩溃(即抛出未捕获的运行时异常),则会出现最大的问题.在这种情况下,整个程序仍在运行,但它出现故障.
既然我无法使每个线程变得万无一失,我想在任何线程崩溃时完全关闭JVM .
问题:如何在任何线程引发的主程序中捕获运行时异常并要求系统关闭?
在主程序的顶部添加几行:
public static void main(final String[] args) {
// Making sure that if one thread crashes,
// then the whole JVM will shut down.
Thread.setDefaultUncaughtExceptionHandler(new Thread.
UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
System.out.println(t + " throws exception: " + e);
System.exit(1);
}
});
// Do anything you want from here
....
}
Run Code Online (Sandbox Code Playgroud)
这将启动JVM的关闭过程.请注意,某些活动线程可能仍会运行一段时间.
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |