异步Servlet与同步Servlet

dea*_*mon 29 java asynchronous servlets java-ee

由于支持Servlet 3.0异步处理.使用始终异步处理会更好吗?或者在什么情况下同步处理更好?

ska*_*man 42

使用异步servlet最重要的是HTTP推送,服务器可以在选择时将信息发送回客户端,而不是在客户端请求时.在pre-asynch servlet中,这将需要长时间运行的HTTP连接,每个连接都绑定一个服务器线程,这是非常低效的.这种新模型将服务器端处理与连接处理分离.

  • 如果您在服务器端检查ajax数据并且用户转到其他网页,会发生什么?那么现在他们不再需要那些数据了?或者如果用户刷新页面会发生什么?现在服务器端有两个实例来检查用户的数据吗? (2认同)

dan*_*ben 20

阅读文章,Servlet 3.0规范中的异步处理支持有一个非常具体的用例 - 它旨在处理一个AJAX应用程序的情况,该应用程序发出的请求可以在后台触发可能长时间运行的进程.

我们需要这样的事情的原因是响应每个请求线程模型中的一个问题,每次客户端从服务器请求一个页面时都会分配一个线程,而不是为客户端的整个会话分配一个线程.这在AJAX之前运行良好,当客户偶尔提出请求时,但当AJAX应用程序显着增加客户端的请求数量时,这些好处就会丢失.

具体来说,如果一个AJAX请求触发了一些可能缓慢或阻塞的东西,比如数据库操作,我们就会回到我们开始的地方 - 来自服务器线程池的线程可能是空闲的.

异步处理支持尝试通过将请求放入集中式队列来缓解这种情况,这样线程就不会总是卡在等待可能尚未开始处理的请求的结果.简而言之,我们一直试图从我们的线程中获得最大的好处 - 也就是说,减少它们空闲时的时间(但可以提供其他连接).

像任何新的开发项目一样,这不是一个适合所有人的工具.在适当的应用程序中查找特定情况.