当前位置: 首页 > 知识库问答 >
问题:

应用服务器是否为来自同一用户的每个请求创建新线程?

姬昊焱
2023-03-14

这是一个简单的场景:

用户从Web应用程序的网页触发一些操作。这个操作很重,需要更多的时间。

在操作在服务器端完成之前,用户触发器会用一些不同的参数表示相同的操作。因此,第二个请求的第二个操作也将开始处理。

在这种情况下,是否有两个不同的线程,比如第一个线程处理第一个请求,另一个线程处理第二个请求?或者它只是一个线程处理两个请求,第一个操作只是为了执行第二个请求而被中断(未完成)?

在这里,我不想避免用户多次请求相同的操作。只想知道它是如何工作的。

这可能是一个愚蠢的问题,但我对此有点困惑。我身上发生的事情让我更加困惑。对我来说,第一个请求的操作似乎还没有完成。

如果有帮助的话,它是Websphere application server。

共有2个答案

红明德
2023-03-14

不是。每个请求都独立于其他请求。websphere中没有线程关联。自学的一个好方法是签出websphere日志。当WebSphere将记录写入其日志文件(例如SystemOut)时。日志等日志包括线程id。以下是WebSphere日志文件中的示例记录:

[2008年12月11日13:06:36:830 CST]0000002e虚拟主机I。。。。。

第二个字段是线程id,即“0000002e”。因此,通过这种方式,您可以关联两个不同线程处理两个请求的方式。希望这对你有意义。

姜献
2023-03-14

WebSphereWebContainer对所有请求使用线程池。

对于任何请求(不管是谁发出的),从池中获取一个线程,处理请求,然后线程返回池中。

即使请求是一个接一个的,也不能保证同一个线程会处理它们。

如果您看到一个请求干扰另一个请求,则很可能是您在代码中执行的操作,而不是由于WebSphere的行为。

 类似资料:
  • 我尝试分析一个gRPC java服务器。我主要看到下面的一组线程池。 null

  • 问题内容: 如何检查是否从同一服务器发送了请求? 说,我的网域位于www.domain.com。现在,我有php处理文件,它将处理通过该域托管的表单。仅当请求是从域内发送时才执行此过程。www.domain.com以及从其他域发送的任何其他请求将被丢弃。 问题答案: 基本上:您不能。 使用HTTP协议,每个请求彼此独立。 第一个想法是检查Referer HTTP标头,但请注意: 可以伪造 (由浏览

  • 问题内容: 我有一堂课 不确定规范对HTTPServlet的回收有何评论:servlet容器是否应该在每个传入请求上创建此类的新实例,或者实现可以在请求之间重用类? 我正在调查一个有趣的问题,其中似乎是在GAE_SERVLETREQUESTServlet实例上创建的Map保持了请求之间的状态。 问题答案: 对于一般情况-非分布式,多线程的,可以保证只有servlet的一个实例。根据Servlet

  • 我只是想了解如何在Java中编写一个每请求线程的TCP服务器。我已经编写了一个每连接线程的服务器,它运行serverSocket.accept()并在每次新连接进入时创建一个新线程。 如何将其修改为每请求线程服务器?我想传入的连接可以放入某种队列中,但是您如何知道哪个连接发出了请求&准备好了服务呢? 我怀疑NIO在这里是必要的,但不确定。 多谢了。 [编辑] 明确一点--原来的“服务器”只是我编写

  • 在开发spring-bootREST API或spring-mvc REST API时,我们有用@Controller、@Service和@Repository注释的类。这些都在tomcat应用程序服务器后面工作。 那么,当多个请求同时到达应用服务器时,是否为每个请求创建了控制器、服务和存储库的新实例?spring是如何处理的?bean的连接是在运行时进行的吗? DispatcherServlet

  • 本文向大家介绍游戏服务器应该为每个用户开辟一个线程还是一个进程,为什么?相关面试题,主要包含被问及游戏服务器应该为每个用户开辟一个线程还是一个进程,为什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 游戏服务器应该为每个用户开辟一个进程。因为同一进程间的线程会相互影响,一个线程死掉会影响其他线程,从而导致进程崩溃。因此为了保证不同用户之间不会相互影响,应该为每个用户开辟一个进程