在Servlet请求/响应的上下文中,我读到了:
Using a different thread to do work required by a request will, as you expect, allow the response to be sent immediately.
我只是想知道Servlet线程何时将实际处理移交给另一个线程然后这意味着它在那个时间点没有预期的响应,那么发送即时但是有什么价值呢?无意义的回复回到浏览器?
有人可以给我一个有价值的用例。
答案 0 :(得分:2)
该引言是在讨论一种情况,在这种情况下,您可以返回有意义的响应,而无需实际完成请求所需的所有工作。例如,您可以上传要处理的文件并立即使用处理ID进行响应,但将处理传递给另一个线程。稍后客户端可以使用该ID发出另一个请求,以确定处理是否已完成。
异步servlet场景会在阻止请求时将处理交给另一个线程来完成工作。但是,在处理过程中阻塞的请求将不绑定一个servlet请求线程,就像正常的同步servlet请求一样。
假设您有一个单线程处理器,并且同时发出了10个请求。使用等待处理完成的同步servlet,您将有10个被阻止的请求线程+ 1个处理器线程。但是使用异步servlet,你有0个被阻塞的线程+ 1个处理器线程。这是非常重要的收获。