gpt4 book ai didi

java - 一个线程可以同时处理多个请求吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:19 27 4
gpt4 key购买 nike

这个问题是针对 Tomcat 的,但是一般适用于其他应用程序服务器/Servlet 容器的答案也很有趣。

根据我的理解,可以保证每个请求都由来自请求处理线程池的单个线程处理(让我们忽略应用程序请求处理代码异步执行某些工作的情况)。

但我想知道的是,是否可以保证单个线程同时只会服务一个请求?

换句话说,是否有可能在线程 T1 上执行的请求 R1 的工作被抢占,然后线程 T1 用于处理请求 R2,之后 R1 的处理继续 在 T1

或许,这个问题可以更概括为:是否可以“抢占”线程 T1 上的 Runnable R1 执行以支持 同一线程 T1 上另一个 Runnable R2 的执行?

我无法摆脱我只是忽略了 Java 中多线程的一些基本原则的唠叨感觉,所以请赐教!

最佳答案

不,多线程背后的原理是一个处理器可以同时运行多个线程,并以给定的时间片在它们之间切换。

但这就是处理器。线程不再在工作单元之间切换,因为那是处理器的工作。

当然,对于异步 servlet,这并不完全正确。这个想法是执行长时间等待操作的请求(向 3rd 方服务器的请求等)可以在等待答案时释放服务线程,因此可以处理新的客户端请求。然而,这不是“常规”线程操作,由应用程序服务器处理。

关于java - 一个线程可以同时处理多个请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com