Servlet3.0 开启异步两种方式:
方式一:web.xml形式
<servlet>
<servlet-name>async0</servlet-name>
<servlet-class>async.Async0</servlet-class>
<async-supported>true</async-supported>
</servlet>
方式二:@WebServlet
@WebServlet(urlPatterns = "/DemoClass", asyncSupported = true)
Tomcat7源码中的示例代码如下:
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final AsyncContext actx = req.startAsync();
actx.setTimeout(30*1000);
Runnable run = new Runnable() {
@Override
public void run() {
try {
Thread.currentThread().setName("Async2-Thread");
log.info("Putting AsyncThread to sleep");
Thread.sleep(2*1000);
log.info("Writing data.");
actx.getResponse().getWriter().write("Output from background thread. Time:"+System.currentTimeMillis()+"\n");
actx.complete();
}catch (InterruptedException x) {
log.error("Async2",x);
}catch (IllegalStateException x) {
log.error("Async2",x);
}catch (IOException x) {
log.error("Async2",x);
}
}
};
Thread t = new Thread(run);
t.start();
}
“异步的servlet并不会使客户端的访问速度加快,只是提升了服务器端的处理性能,减轻了服务器端的资源消耗,使得服务器端使用比较少的线程就能处理大量的连接。”--摘自http://www.cnblogs.com/jiaoyiping/p/6130503.html