这个问题是关于Tomcat的,但适用于其他应用服务器/Servlet容器的答案也很有趣。
据我所知,每个请求都保证由一个线程从请求处理线程池中处理(让我们忽略应用程序请求处理代码异步执行的情况)。
但我想知道的是,是否保证单个线程在同一时间只能服务于一个请求?
换句话说,请求R1的工作是否可能被抢占,然后线程T1被用来处理请求R2,之后再继续处理R1(在T1上)?
可能,这个问题可以更加普遍化: 在同一个线程T1上,可否在执行Runnable R1时被另一个Runnable R2“抢占”?
我无法摆脱这种感觉,我可能只是忽略了Java多线程的一些基本原则,请给我指点!
据我所知,每个请求都保证由一个线程从请求处理线程池中处理(让我们忽略应用程序请求处理代码异步执行的情况)。
但我想知道的是,是否保证单个线程在同一时间只能服务于一个请求?
换句话说,请求R1的工作是否可能被抢占,然后线程T1被用来处理请求R2,之后再继续处理R1(在T1上)?
可能,这个问题可以更加普遍化: 在同一个线程T1上,可否在执行Runnable R1时被另一个Runnable R2“抢占”?
我无法摆脱这种感觉,我可能只是忽略了Java多线程的一些基本原则,请给我指点!