Java Servlet3.1中引入的新异步特性是什么?

Java Servlet3.1中引入的新异步特性是什么?,java,jakarta-ee,servlets,servlet-3.0,Java,Jakarta Ee,Servlets,Servlet 3.0,我开始读关于jee 7的书,我读到的一件事是: “自Servlet技术诞生以来,在请求处理过程中,它只允许传统的(阻塞)输入/输出。在Servlet 3.1版本中,新的非阻塞I/O API使Servlet能够在没有任何阻塞的情况下读取或写入” 自从Servlet3.0引入AsyncContext和AsynchServlet以来,该语句的正确性如何 这意味着可以在读写操作发生的同时执行其他任务,而无需等待。这反过来意味着现在您可以更轻松地完成Ajax和部分页面刷新,而无需为每次更新分别调用serv

我开始读关于jee 7的书,我读到的一件事是:

“自Servlet技术诞生以来,在请求处理过程中,它只允许传统的(阻塞)输入/输出。在Servlet 3.1版本中,新的非阻塞I/O API使Servlet能够在没有任何阻塞的情况下读取或写入”

自从Servlet3.0引入AsyncContext和AsynchServlet以来,该语句的正确性如何

这意味着可以在读写操作发生的同时执行其他任务,而无需等待。这反过来意味着现在您可以更轻松地完成Ajax和部分页面刷新,而无需为每次更新分别调用servlet

那么,与异步servlet的3.0规范相比,Servlet3.1引入的新特性是什么

谢谢

这篇文章的摘录:

Servlet 3.0允许异步请求处理,但仅限于 传统的I/O是允许的。这可能会限制您的应用程序的可伸缩性 应用程序

这在Servet3.1(JSR340,将作为Java的一部分发布)中得到了解决 EE 7)通过添加事件侦听器-ReadListener和WriteListener 接口。然后使用 ServletInputStream.setReadListener和 ServletOutputStream.setWriteListener。听众有回叫 当内容可供读取或删除时调用的方法 可以无阻塞地写入


综上所述,,Servlet 3.1扩展了处理非阻塞I/O的可能用例。

我以前读过这篇文章……仍然不清楚Servlet 3.0中为什么不可能做到这一点。在Servlet 3.0中,我可以从自定义线程池启动一个新线程,并通过从输入流读取来完成这项工作。当然,它在3.1中使用了一个内部线程池处理这个案件,但它免除你管理它,甚至猜测它的存在。使用3.0,您必须自己管理它。这正是我想要理解的部分…所以在3.1中引入了新的API,允许以非阻塞方式从流中读写?也许我需要了解非阻塞io是如何工作的。谢谢。确切地说,NIO现在可以在3.1中使用更多用法