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,线程将被释放.

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...