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

时间:2015-02-01 07:05:16

标签: java multithreading tomcat java-ee servlets

问题: 如果在servlet / controller中生成新线程并且处理该控制器的主线程已经完成,那么控制器线程是否会阻塞,直到它的所有子线程都返回之后才返回?

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

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

1 个答案:

答案 0 :(得分:2)

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

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