# Reactor Learning **Repository Path**: tzj2015/reactor-learning ## Basic Information - **Project Name**: Reactor Learning - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-11 - **Last Updated**: 2021-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## JDK 9 Reactive Stream ### 背压 ### Flow.class - Flow - Publisher 发布者 - Subscription 处理器 - Subscriber 订阅者 ## Servlet 3.0 ### 异步 Servlet #### 为什么使用异步Servlet,同步Servlet阻塞了什么? 1. 同步、异步是后台服务器概念,对客户端来讲是同步 2. 异步Servlet不会阻塞Tomcat的Servlet线程,Servlet线程可以同时处理多个请求 3. 同步Servlet阻塞了Servlet线程,多个请求需要排队处理 #### Code ```java // 开启异步支持 @WebServlet(name = "AsyncServlet", value = "/async", asyncSupported = true) public class AsyncServlet extends HttpServlet { private static final long serialVersionUID = -5652269288262248102L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 开启异步 AsyncContext asyncContext = request.startAsync(); // 执行异步方法 CompletableFuture.runAsync(() -> doAsyncSomething(asyncContext, asyncContext.getRequest(), asyncContext.getResponse())); } private void doAsyncSomething(AsyncContext asyncContext, ServletRequest request, ServletResponse response) { response.setContentType("text/html"); try { TimeUnit.SECONDS.sleep(4); PrintWriter out = response.getWriter(); out.println("Async Done"); } catch (Exception e) { e.printStackTrace(); } finally { asyncContext.complete(); } } } ``` ## Reactor > reactor = jdk8 stream + jdk9 reactive stream - **Mono** return 0 - 1 - **Flux** return 1 - N