java - 父线程在它们退出 servlet 容器之前是否等待子线程退出?

标签 java multithreading tomcat jakarta-ee servlets

问题: 如果您在 servlet/ Controller 内生成新线程,并且处理该 Controller 的主线程已完成,那么 Controller 线程是否会阻塞,直到其所有子线程都已返回,然后它才会返回?

背景: 我有一些代码在 Controller 内部产生的单独线程中运行,但处理 Controller 的线程似乎没有独立返回;子线程的处理时间的确切长度有很长的延迟。它似乎在等待子线程在退出之前完成。这是正常的吗?

问题已简化:我知道当父线程运行时子线程将运行而不会阻塞父线程,但是当父线程完成其任务时会发生什么?

最佳答案

您需要在 Thread 上显式调用 join 以等待它完成,否则它只会在后台运行,不会影响您的父线程。所以你的 Controller 不应该阻塞,直到你的子线程返回。

虽然,您的容器中可能有一些配置,具体取决于您的容器,这可能会导致这种情况,但我对此表示严重怀疑。

关于java - 父线程在它们退出 servlet 容器之前是否等待子线程退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28260361/

相关文章:

android - 如何将消息从单独的线程发送到 UI 线程?

java - FileUploadException 读取在 tomcat 上超时很长的上传时间

java - MySQL JDBC 驱动程序 5.1.33 - 时区问题

JAVA,@Pattern(regex ="[[:Alpha:]]+")只允许aaaa而不是字母字符?

javascript - 等待变量存在然后在 javascript 中执行某些操作

java - Spring Boot - 调度程序配置

java - 使用命令行向 Apache Tomcat 服务器发送多个请求

java - Spring MVC 将模型传递给 View ,然后传递给 Controller

java - 如何使用位于本地驱动器中的图像文件,将其打印在jsp 页面或servlet 页面中?

javascript - Java-将javascript连接到servlet