In Java 教程 http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html它说的是try { ... } finally { ... }
:
注意:如果在执行 try 或 catch 代码时 JVM 退出,
那么finally块可能不会执行。同样,如果线
执行 try 或 catch 代码被中断或终止,最后
即使块可能不会执行整个应用程序
继续.
线程真的可以吗被打断 http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#interrupt%28%29 or killed (我以为那是不可能的? http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#destroy%28%29)使得finally
当运行该线程的 JVM 处于运行状态时,该块将不会被执行not退出/杀死? (我很困惑,因为上面的引文对此非常明确,没有太大的误解空间。)
编辑:将问题分解为其核心意图。
好吧,我纠正了。可以通过使用已弃用的方法来实现:
@Test
public void testThread() throws Exception {
Thread thread = new Thread(new MyRunnable());
thread.start();
Thread.sleep(100);
thread.suspend();
Thread.sleep(2000);
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Start");
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.out.println("Done");
}
}
}
由于(很可能)在线程休眠时发生暂停,finally
块永远不会被执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)