?????????????????????????????????Servlet API 3.0????????

 

@WebServlet(asyncSupported = true?? value = "/AsyncServlet")
public class AsyncServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request?? HttpServletResponse response) throws ServletException?? IOException {
Work.add(request.startAsync());
}
}
public class Work implements ServletContextListener {
private static final BlockingQueue queue = new LinkedBlockingQueue();
private volatile Thread thread;
public static void add(AsyncContext c) {
queue.add(c);
}
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
AsyncContext context;
while ((context = queue.poll()) != null) {
try {
ServletResponse response = context.getResponse();
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.printf("Thread %s completed the task"?? Thread.currentThread().getName());
out.flush();
} catch (Exception e) {
throw new RuntimeException(e.getMessage()?? e);
} finally {
context.complete();
}
}
} catch (InterruptedException e) {
return;
}
}
}
});
thread.start();
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
thread.interrupt();
}
}

?????????????????е??????????????????????????????????????????????????????????????????????75????????????????20???????????????????????????????????????????????????ɡ?
???????Servlet?????????????????????????????????Servlet??????????????
????@WebServlet(asyncSupported = true?? value = "/AsyncServlet")
??????Σ?????????????????????????????д???????е??
????Work.add(request.startAsync());
???????????????????и???Work?????????????????AsyncContext??????????????????????????????????????
????????????????2????????????????Work???????ServletContextListener?????????????????????????????????????????????????????е????????????????????????????????е???????????
???????????????????????????????Thread.sleep()????????2??000ms???????????б???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????д???????
?????????y?????????????????????????????????????Tomcat 7.0.24?????????????????????????
?????????????265ms
????????????6ms
????????????2??058ms
????????????1??965??????/??
?????????????????????????????????????????????????????????????
??????????е?Servlet??д???Servlet??????????????????y???????????????Щ??ó?????????????????????????????????????????????????????????????????????????????????????????????????????——??????????ж???????????????
??????????Щ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????棬?????????????????????????????????????????????????Servlet API 3.0?????????????÷?????????Tomcat 7??JBoss 6????Jetty 8???????Щ??????????????????????????á?????????????????Comet??????????????????????????????Weblogic FutureResponseServlet??
?????籾??????????????????????Java Web??????????????Servlet API???п??????????????Web MVC?????????Servlet??JSP????????????????????????У??????ù?????????Servlet API 3.0?????????????Щ??????API???