了解更多,添加308139472
一、本来就能实现异步非阻塞,为啥要用WebFlux?
相信有过相关了解的同学都知道,Servlet 3.1就已经支持异步非阻塞了。
我们可以以自维护线程池的方式实现异步
说白了就是Tomcat的线程处理请求,然后把这个请求分发到自维护的线程处理,Tomcat的请求线程返回
@WebServlet(value ="/nonBlockingThreadPoolAsync", asyncSupported =true)
publicclassNonBlockingAsyncHelloServletextendsHttpServlet{
privatestaticThreadPoolExecutor executor =newThreadPoolExecutor(100,200,50000L, TimeUnit.MILLISECONDS,newArrayBlockingQueue<>(100));
protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException{
AsyncContext asyncContext = request.startAsync();
ServletInputStream inputStream = request.getInputStream();
inputStream.setReadListener(newReadListener() {
@Override
publicvoidonDataAvailable()throwsIOException{