已经有好几天我试图了解servlet 3.0、3.1和spring webflux的功能。
目前,我了解servlet 3.0的用途以及它在幕后的工作方式。接下来的一点是Servlet 3.1。正如所有资源中所述,我读过servlet 3.1 solves the problem of blocking IO in servlet 3.0:
换句话说,对于Servlet 3.0,只有请求处理部分 变为异步,但不是用于服务请求和响应的I / O。 如果有足够的线程阻塞,这将导致线程饥饿并影响 性能。
使用Servlet 3.1 NIO,此问题可以通过ReadListener和 WriteListener接口。这些在ServletInputStream中注册 和ServletOutputStream。侦听器具有的回调方法是 当内容可供读取或写入时调用 Servlet容器不会阻塞I / O线程。所以这些 I / O线程已释放,现在可以满足其他增加的请求 性能。
我想了解底层的Java功能,该功能允许您了解 可以读取内容或编写内容,而不会在I / O线程上阻塞servlet容器。我不知道Java中的那种机制。什么时候添加到java(哪个版本)的?
您能解释一下该功能以及它如何在较高的抽象水平上工作吗?
我发现以下video与我的问题有关,并且找到了以下快照:
我的问题主要集中在容器如何理解我们可以在不阻塞的情况下读取/写入数据。