Java基础-守护线程和用户线程

Java分为2种线程:用户线程和守护线程
守护线程就是指在程序运行时候在后台提供一种通用服务的的线程,比如垃圾回收线程就是一个守护线程,并且这种线程并不是程序中不可或缺的部分。因此,所有的非守护线程结束时,程序也就终止了,同时会杀死进程中所有的守护线程。反过来,只要任何非守护线程还在运行,程序就不会终止。
守护线程和用户线程没有本质的区别,唯一不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行,只剩下守护线程的存在,虚拟机就推出了,因为没有守护者,守护线程就没有工作了,没有继续运行程序的必要了

调用线程的setDaemon(true), 设置线程为守护线程。

  • thread.setDaemon(true)必须在thread.start()之前设置。
  • 在Daemon线程中产生的新线程也是Daemon的
  • 不是所有的应用都可以分配给Daemon线程来进行服务,比如读写操作或者计算逻辑。因为Daemon Thread还没来得及进行操作,虚拟机可能已经退出了。

你可能感兴趣的:(Java基础-守护线程和用户线程)