一个好的例子立即守护进程和main线程退出的好例子
main线程退出条件:2种情况
1. main线程执行完,且由其执行代码而启动线程(非守护)执行完
2. main线程执行完,且由其执行代码而启动线程都是守护线程,jvm退出
public static void main(String[] args) throws IllegalArgumentException, InterruptedException { long startTime = System.nanoTime(); Thread t = new Thread(new Runnable() { public void run() { try { TimeUnit.DAYS.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } } }, "Daemon-T"); // t.setDaemon(true); t.setDaemon(false); t.start(); //此处是main线程休息15后打印一句 TimeUnit.SECONDS.sleep(15); System.out.println("main线程退出,程序执行" + (System.nanoTime() - startTime) / 1000 / 1000 / 1000 + " s"); }