【问题标题】:Can I spawn new Threads in JSP?我可以在 JSP 中生成新线程吗?
【发布时间】:2011-11-30 14:55:47
【问题描述】:

我需要从 JSP 创建一个新线程。在 JSP 中生成线程是个好主意吗?
有没有替代方法?

【问题讨论】:

    标签: multithreading jsp


    【解决方案1】:

    绝对不是在 JSP/Servlet Web 应用程序中手动生成非托管线程是个好主意。肯定不会在 JSP 端完成,因为它不符合 JSP 的责任。

    线程是一种相对危险的资源,需要格外小心。想象一下,您的 JSP 在每个请求上生成一个新线程,然后您的 Web 服务器将在例如 1000 个请求之后被终止。您需要重新启动它。

    即使您在每个用户的基础上正确控制线程使用和终止,您仍然需要确保单个访问者不能在会话范围内产生多个线程。但是,例如,当您同时拥有 1000 个会话时,您的服务器仍然会被杀死。

    您想要一个应用程序范围的共享线程池,而不是锁定最多 10~20 个线程或其他东西。通常,有点像样的 Java EE 容器已经提供了它。您需要查看其管理控制台和/或其手册以了解如何配置和使用它。您最终还可以借助 ExecutorServiceServletContextListener 中的帮助自己创建一个线程池,但您应该非常了解线程的工作原理以及如果您做错了可能会产生什么影响。

    这里有几个相关的问题可以从中获得一些想法:

    【讨论】:

      【解决方案2】:

      不,不是。 JSP 不应包含 Java 代码。将 servlet 用于 Java 代码,然后分派到 JSP 以生成标记。或者使用一个 MVC 框架来为你做这件事。

      从 servlet 生成线程是否是个好主意取决于您的特定用例。

      阅读How to avoid Java code in JSP files?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-26
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多