AsyncContext初体验

先写个Servlet

@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/**
		 * 开启异步。本方法所有代码均立即执行,但就是不立即返回,
		 * 除非context.complete()或context.dispatch() 或 Timeout;
		 */
		AsyncContext context = request.startAsync();
		/**
		 * 设置超时时间,如果超出本时间,将返回500返回码服务器错误。
		 */
		context.setTimeout(150000);
		
		/**
		 * 启动一个新的线程。处理它。在这个里面根据条件去context.complete();
		 */
		context.start(new Chuli(context));
	}

写一个处理类

package com.alisita;

import java.io.IOException;

import javax.servlet.AsyncContext;
import javax.servlet.ServletResponse;

public class Chuli implements Runnable{
	private AsyncContext context;
	
	public Chuli(AsyncContext context) {
		super();
		this.context = context;
	}


	@Override
	public void run() {
		/**
		 * 睡个8秒模拟一下。
		 */
		try {
			Thread.currentThread().sleep(8000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		/**
		 * 设置返回结果
		 */
		ServletResponse response = context.getResponse();
		response.setContentType("text/html;charset=UTF8");
		try {
			response.getWriter().write("ok");
		} catch (IOException e) {
			e.printStackTrace();
		}
		/**
		 * 结束异步,立即响应。
		 */
		context.complete();
		
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值