我的理解是Servlet3.0之前,就算你在处理业务时,使用了线程池来异步处理,但是在调用线程池的这个tomcat线程依然会阻塞等待线程池执行完成,才负责将response返回,再接收其他的request请求。举个例子:我是商店老板,你结账,我让收银机自动计算账单(开启线程),我空闲,但是我不能处理下一个人的结账请求。我需要等收银机完成后,我才给你说你需要付多少钱。
servlet3.1我也举个例子:我是奶茶店销售员(tomcat线程),你来买奶茶,我只需要打印你点的单,把它交给制作员(工作线程:开启异步,注册监听器--等奶茶好了,就递给销售员),我给你一个编号就好了,我可以马上继续接单(处理其他request请求),等奶茶好了(事件处理完成),制作员根据监听器指示,随便交给任意一个空闲的销售员(空闲的tomcat线程),然后根据编号(request上下文信息)交给你。