-4

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

例如,servlet 线程的重用会导致子线程被破坏吗?

我需要明确的论据来证明生成的 servlet 中的线程的生命周期并不能保证到最后,或者有理由支持其他情况。

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

4

1 回答 1

4

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

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

笔记:

  • Servlet 规范未涵盖此行为,因此无法保证它将如何在您的 Web 容器上工作。
  • Servlet 不应产生线程,因为这是由 Web 容器管理的资源。
于 2013-05-13T13:08:04.353 回答