前台线程和后台线程

前台线程

一般我们程序员接触的都是前台线程。

比如在Tomcat中,通常会创建一个线程池来处理用户请求,这些线程都是前台线程。当Tomcat关闭时,这些前台线程将被关闭。

再比如Spring框架的 @Schedule注解启动的定时任务线程,就是个前台线程。

后台线程

一般程序员接触的比较少。

在Java中,后台线程(daemon thread)是指在程序运行时在后台提供服务的线程,不会阻止程序的退出。与前台线程(non-daemon thread)相比,当所有的前台线程都结束时,后台线程会自动结束。

拿JVM举例来说,

除了垃圾回收器是JVM内置的后台线程之外,还有以下几种后台线程:

  1. Signal Dispatcher:负责接收并处理操作系统发送的信号。
  2. Attach Listener:负责监听外部JVM进程的请求,例如通过Java Mission Control对正在运行的JVM进行诊断和监控。
  3. Finalizer:负责处理对象的finalize方法。
  4. Reference Handler:负责处理引用对象的清理和维护。
  5. CompilerThread:JIT编译器使用的线程。
  6. VM Thread:负责执行VM操作,如类加载和卸载、异常处理等。

这些后台线程都是由JVM自行管理的,并且在JVM启动时自动启动。这些线程的存在可以帮助JVM更好地管理内存、处理信号、执行编译等操作。

posted @ 2023-04-22 23:30  szcj~  阅读(79)  评论(0)    收藏  举报