Tomcat http-nio线程为何是守护线程?与ForkJoinPool有何关联?
Spring Boot线程相关问题解答
1. 为什么http-nio-8095-exec-1是守护线程?
http-nio-8095-exec-1是Spring Boot默认内嵌Tomcat容器的NIO工作线程,Tomcat将这类线程设为守护线程的核心目的是保障JVM能正常退出。
JVM终止时,会等待所有非守护线程执行完毕才会退出;而守护线程会随JVM终止自动结束。Tomcat把HTTP请求处理线程设为守护线程,能避免残留的工作线程(比如正在处理请求的线程)阻止JVM关闭,确保应用关闭流程顺利完成。
2. 它与ForkJoinPool是否存在关联?
http-nio-8095-exec-1和ForkJoinPool没有直接关联:
- 前者是Tomcat容器自身维护的NIO线程池工作线程,专门用于处理HTTP请求;
- ForkJoinPool是Java并发包中用于分治任务的线程池,它的工作线程确实符合官方文档描述:
所有工作线程初始化时都会将
Thread.isDaemon()设置为true。
两者的共同点是工作线程都是守护线程,但分属不同的线程池体系,不存在直接的依赖或调用关系。
内容的提问来源于stack exchange,提问作者jwpol
相关产品推荐
相关产品推荐

