Java Daemon线程简介

  所谓Daemon(守护线程)就是运行在程序后台的线程,通常守护线程是由JVM创建的,用于辅助用户线程或者JVM工作,比如典型的GC线程。用户创建的线程也可以设置成Daemon线程(通常需要谨慎设置),

1 Thread t = new Thread(new Runnable() {
2     public void run() {
3         Thread.sleep(1000);
4     }},“”);
5 t.setDaemon(true);//设置守护线程
6 t.start()

 程序的主线程(main线程)也不是守护线程。Daemon线程在java里面的定义是,如果虚拟机中只有Daemon线程运行,则虚拟机退出。

  1)虚拟机中可能同时有多个线程执行,只有当所有的非守护线程(通常都是用户线程)都结束的时候,虚拟机的进程才会结束,不管当前运行的线程是不是main线程。

  2)main线程运行结束,如果此时运行的其他线程全部是Daemon线程,JVM会使这些线程停止,同时退出。但是如果此时正在运行的其他线程有非守护线程,那么必须等所有的非守护线程结束,JVM才会退出

 

使用守护线程的时机

  守护线程经常用作与执行一些后台任务,因此有时它也被称为后台线程,当你希望关闭某些线程的时候,或者退出JVM进程的时候,一些线程能够自动关闭,此时就可以考虑用守护线程为你完成这样的工作。

posted @ 2021-02-04 17:08  薯餠  阅读(46)  评论(0)    收藏  举报