Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从servlet创建的线程的生命周期得到保证了吗?_Java_Multithreading_Servlets - Fatal编程技术网

Java 从servlet创建的线程的生命周期得到保证了吗?

Java 从servlet创建的线程的生命周期得到保证了吗?,java,multithreading,servlets,Java,Multithreading,Servlets,假设不推荐从servlet启动线程,我想知道是什么让这个从servlet创建和启动的线程意外停止 例如,重用servlet线程会导致子线程被销毁 我需要清楚的参数来证明从servlet生成的线程的生命周期并没有保证到底,或者需要推理来支持其他情况 我不想要讨论,我想要清楚明确的示例。从servlet创建的线程不会被容器终止(只要容器正在运行),原因有两个: 容器没有对servlet内部创建的线程的引用,因此它无法对其调用例如Thread.stop()(是的,这是一种不推荐使用的方法,绝对不是终

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

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

我需要清楚的参数来证明从servlet生成的线程的生命周期并没有保证到底,或者需要推理来支持其他情况


我不想要讨论,我想要清楚明确的示例。

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

  • 容器没有对servlet内部创建的线程的引用,因此它无法对其调用例如
    Thread.stop()
    (是的,这是一种不推荐使用的方法,绝对不是终止线程的好方法,)
  • 只有线程本身才知道如何正确解锁它已锁定的监视器,因此强制线程终止将导致监视器的状态不一致
注:

  • Servlet规范未涵盖此行为,因此无法保证它将如何在web容器上工作
  • servlet不应该生成线程,因为这是由web容器管理的资源

如果您想要一个清晰的示例,为什么不让线程打印一个计数器值,然后自己尝试重用servlet呢?“因此没有讨论的地方”-从这里开始采用->
thread.stop()
是不推荐的。是的,确实如此,这是停止线程的一种不好的方式,原因2对此进行了解释。