java-servlet何时释放其线程

前端之家收集整理的这篇文章主要介绍了java-servlet何时释放其线程 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

假设没有存活,当Servlet容器充当独立服务器时,我假设直到将整个响应发送到客户端(例如Web浏览器)后,才会释放Servlet的线程.这是正确的假设吗?

但是,如果servlet在像Nginx这样的反向代理后面,会发生什么呢?响应传递到Nginx之后,线程是否被释放,或者直到响应发送给其最终客户端(例如浏览器)时才保留线程?

更新:让我尝试使它更加清楚.

Nginx这样的响应从Servlet发送到代理仅需要几毫秒(例如2ms).但是,最终的响应可能要花费额外的80毫秒(或大约80毫秒)的时间,才能从Nginx发送到浏览器.一旦将响应发送到Nginx,servlet就会释放线程/流,还是直到响应发送到浏览器(即整个80ms),servlet才会保留线程/流.

最佳答案
问题:我假设直到将整个响应发送到客户端(例如Web浏览器)后,才会释放Servlet的线程.这是正确的假设吗?

答:不,这是错误的. Servlet容器只会将内容写入套接字并返回.不能保证从write()方法返回的内容将确保响应已到达客户端.

问题:将响应传递到Nginx之后,或者直到响应发送给最终客户端(例如浏览器)时线程才保留?

回答:当Nginx在后面时,则Servlet容器的客户端是Nginx.它不知道实际的远程客户端.因此,一旦响应写入Nginx,线程将被释放.

猜你在找的Nginx相关文章