问题: 如果您在 servlet/ Controller 内生成新线程,并且处理该 Controller 的主线程已完成,那么 Controller 线程是否会阻塞,直到其所有子线程都已返回,然后它才会返回?
背景: 我有一些代码在 Controller 内部产生的单独线程中运行,但处理 Controller 的线程似乎没有独立返回;子线程的处理时间的确切长度有很长的延迟。它似乎在等待子线程在退出之前完成。这是正常的吗?
问题已简化:我知道当父线程运行时子线程将运行而不会阻塞父线程,但是当父线程完成其任务时会发生什么?
最佳答案
您需要在 Thread 上显式调用 join 以等待它完成,否则它只会在后台运行,不会影响您的父线程。所以你的 Controller 不应该阻塞,直到你的子线程返回。
虽然,您的容器中可能有一些配置,具体取决于您的容器,这可能会导致这种情况,但我对此表示严重怀疑。
关于java - 父线程在它们退出 servlet 容器之前是否等待子线程退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28260361/