【问题标题】:is it good to use thread in web application在Web应用程序中使用线程好吗
【发布时间】:2015-09-30 17:15:13
【问题描述】:

我们从一开始就知道,线程是用来做并行处理的,但是后来当涉及到 Web 应用程序开发时有人建议不要在 Web 应用程序中使用线程。即我们有 Checkmarx 扫描仪,这建议我们不要在 Web 应用程序中使用线程。

基于我们的应用程序架构 - 我们设计了页面加载的位置,控制来自数据库的绑定数据。

现在假设我们有 5 个 DropDownList 并且都从数据库绑定数据,为此我们创建线程,因此总体而言,与顺序绑定相比,它花费的时间更少(注意:我们在最后加入所有线程事件)。

所以我怀疑我们是否应该在 Web 应用程序中使用线程。如果是,那么以哪种方式作为线程安全是主要问题。没有,那为什么?

从下面的链接我得到了一些信息。

Is it not encouraged to use threads in web application?

role of multithreading in web application

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为 做 XXX 是否好/最好 是基于意见的,并且对给定场景高度特定,没有一般性规则,它也太宽泛了。如果你不得不问这样的问题,你可能弊大于利。
  • 当有人建议不要使用线程时,我倾向于忽略他,因为他不知道他在说什么。

标签: multithreading web


【解决方案1】:

在 Web 应用程序中生成线程总是很棘手。线程的成本很高(实例化和系统资源),它们可能会挂起,必须对其进行管理,如果产生的线程过多,可能会导致系统崩溃。此外,Web 应用程序页面可以同时被调用数百次。

我总是从上下文中回答这个问题,因为我不认为线程是邪恶的。如果 Web 应用程序开发人员问我:他是否应该在服务器内为每个客户端调用生成五个线程以进行五个下拉菜单?我回答:不,当然不是!这听起来像是同时为 10 个用户制作的 Web 应用程序!

我会说是的:您已经实现了服务端 REST API。您的所有下拉菜单都需要来自不同 REST 服务的输入。我会说,是的,让自己释放所有 AJAX-Request 吧!客户可以处理它,他不必管理数百个用户。您的服务器看起来仍然不错。

线程不是问题。线程的应用可能是一个问题。为您的想法构建一个简单的原型,然后使用负载平衡应用程序来调用您的页面。使用 100 个用户同时进行 1000 个呼叫。监视系统并查看线程对系统的作用。如果它改善了,请使用它,如果它崩溃了,请不要使用它。收集经验并相应地应用线程。

【讨论】:

  • 看起来像是对我在第一段中所写内容的正式定义。
  • 查看这篇关于 JavaEE 线程的帖子:合法启动线程/同步 EJBS - 地狱还是天堂:adam-bien.com/roller/abien/entry/…。 “在应用程序代码中启动和管理线程很难实现、监控和调试——这绝不是最佳实践。” - 这并不意味着它被禁止。
【解决方案2】:

我认为多线程取决于它的使用和频率。例如,如果你的 5 下拉列表绑定数据库每天使用一次,那么没有理由阻止你使用多线程。但是,如果为每个请求创建下拉列表并且每分钟有 1k 个请求,则并行计算将使您的内核过载,并且排队时间将远高于顺序处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多