从servlet创建的线程的生命是否得到保证?



假设从servlet启动线程是不推荐的,我想知道什么可以使这个从servlet创建和启动的线程意外停止。

例如,重用servlet线程会导致子线程被销毁。

我需要明确的参数来表明servlet生成的线程的生命周期不能保证到最后,或者支持其他情况的推理。

我不想要讨论,我想要清晰明确的例子。

从servlet创建的线程将不会被容器终止(只要容器正在运行),原因有两个:

  • 容器没有对servlet内部创建的线程的引用,因此它不能在它们上调用例如Thread.stop()(是的,这是一个过时的方法,绝对不是终止线程的好方法,更多细节)。
  • 只有线程自己知道如何正确地解锁它所锁定的监视器,所以强制线程终止将导致监视器状态不一致。

指出:

  • 这个行为没有被Servlet规范覆盖,所以不能保证它将如何在你的web容器上工作。
  • servlet不应该产生线程,因为这是web容器管理的资源。

最新更新