【问题标题】:Is it not encouraged to use threads in web application?不鼓励在 Web 应用程序中使用线程吗?
【发布时间】:2012-07-02 11:41:53
【问题描述】:

我们与同事就在 Java 的 Web 应用程序中使用线程进行了一次大型讨论。

他们的观点是不建议在 Java Web 应用程序中使用线程,因为它们不是由容器管理的。 一般来说,我可以接受,因为线程可能会干扰容器。但是,如果它不是一个 Java EE 应用程序而是一个简单的 servlet-app,那么应该用什么来代替它呢?

【问题讨论】:

  • 在您的讨论中使用线程的原因或背景是什么?
  • 在我们的例子中,我们有一个网络应用程序需要定期检查某些数据库中的状态以更新它自己的数据库。

标签: java multithreading web-applications


【解决方案1】:

在 webapp 中使用线程本身不是问题。这仅取决于您使用它们的原因和方式。特别是,如果您有 1000 个用户,并且为每个用户启动一个线程,那么您将让 JVM 崩溃。

但是,如果线程很少启动,对于特定的、减少的用户和用例集,并且如果您使用线程池来限制此类线程的数量,那么您应该没有任何问题。了解自己在做什么很重要。

另外,请确保不要将 HttpServletRequest 或 HttpServletResponse 对象传递给这样的线程,因为它们不打算由多个并发线程使用,并且一旦处理了请求,它们就不应该再使用了。

【讨论】:

  • 另外,确保为这种情况创建的任何线程非常是短暂的 - 否则你将陷入管理地狱,因为如果你取消部署网络应用程序,你的线程可能会像僵尸一样存活下来。在这种情况下,僵尸仍然很受欢迎,但值得避免。
  • 感谢您的回答。一般来说,您正在证明我的立场,即使用它们并不是一个坏的或不鼓励的做法。这只是适当使用和仔细编码的问题,这适用于所有技术。
猜你喜欢
  • 1970-01-01
  • 2015-09-30
  • 2010-11-29
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
相关资源
最近更新 更多