在Web应用程序中使用线程是否合适?

时间:2015-07-12 09:47:08

标签: multithreading web

我们从一开始就知道,线程用于进行并行处理,但是后来在Web应用程序开发中有人建议永远不要在Web应用程序中使用线程。即我们有 Checkmarx 扫描程序,这表明我们不会在Web应用程序中进行线程化。

基于我们的应用程序架构 - 我们设计了在页面加载的地方,控制从数据库绑定数据。

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

所以我怀疑是否应该在Web应用程序中使用线程。如果是,那么线程安全是主要问题。不,为什么呢?

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

Is it not encouraged to use threads in web application?

role of multithreading in web application

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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