对于我们的web项目,一般来说,我们都是同步执行一些数据,所谓同步就是按照顺序,执行完这个然后有序的执行下一个,但是有时我们需要延迟执行一些数据,并且这些数据我们不需要实时的返回的,比如是注册成功,我们会返回一封邮件给用户,这个邮件我们可以在用户注册成功后的5分钟,或者10分钟后向用户发送,那么我们就需要一个延迟函数。一般来说,我们可能直接就会使用new thread开启一条线程来实现来实现,会在Spring mvc或者Struts中这样实现
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
但是从spring 3.0版本开始,我们可以直接通过Async注解来实现我们的延迟操作了。
要使用Async注解,首先在applicationContext.xml加入如下代码
<task:annotation-driven/>
@ResponseBody
@RequestMapping(value = “/register”)
public String register(String username,String passwd) {
JSONObject jsonObject=new JSONObject();
jsonObject.put(“status”, 1000);
jsonObject.put(“username”, username);
AsyncSendMail(username);
return jsonObject.toString();
}
@Async
public void AsyncSendMail(String touser){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//执行发送邮件的操作
System.out.println(“touser==”+touser);
}