Java 程序中,只要前台存在一个线程,则 Java 进程(程序)都不会消失。在前台线程存续期间,可以设置一个后台线程,线程设置为后台线程可通过 Thread.setDaemon(true) 实现。示例代码如下所示:
packagecom.fanfengping.demo; importlombok.extern.slf4j.Slf4j; /*** Java 程序中,只要前台存在一个线程,则 Java 进程(程序)都不会消失。 * 在前台线程存续期间,可以设置一个后台线程,线程设置为后台线程可通过 * Thread.setDaemon(true) 实现 */@Slf4j public class Demo11RunnableDaemon implementsRunnable { @Override public voidrun() { for (int i = 0; i < 100; i++) { try{ Thread.sleep(30); } catch(InterruptedException e) { e.printStackTrace(); } if (i % 5 == 0) { log.info("{} output {}", Thread.currentThread().getName(), i); } } } public static voidmain(String[] args) { Demo11RunnableDaemon demo11RunnableDaemon = newDemo11RunnableDaemon(); Thread threadDaemon = new Thread(demo11RunnableDaemon, "后台线程"); threadDaemon.setDaemon(true); threadDaemon.start(); try{ Thread.sleep(500); } catch(InterruptedException e) { e.printStackTrace(); } } }
运行程序,控制台输出结果如下所示:
将 main 方法中的休眠时间加长后,还会输出更多的信息,如下所示:
由上述两次的输出结果可以看出,前台线程存续期间,后台线程是也是存在的;当前台线程结束后,后台线程也就消失了。