守护线程中finally语句不一定能够执行

来源:互联网 发布:驱动加密软件 编辑:程序博客网 时间:2024/06/06 14:07

在程序中,如果所有的非守护线程都已经执行完毕,那么守护线程将立即被结束,因此守护线程的finally子句不一定能够执行,示例如下:

import java.util.concurrent.TimeUnit;public class ThreadTest {public static void main(String[] args) {Thread t = new Thread(new ADaemon());t.setDaemon(true);t.start();}}class ADaemon implements Runnable{@Overridepublic void run() {try{System.out.println("Starting ADaemon");TimeUnit.SECONDS.sleep(1);}catch(Exception e){e.printStackTrace();}finally{System.out.println("run?");}}}
输出:
Starting ADaemon  //finally子句没有被执行
当main线程退出时,JVM就会立即关闭所有的后台线程

0 0
原创粉丝点击