spring使用Async实现异步或者延迟的操作
2016-07-06 15:39
591 查看
对于我们的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);
}
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);
}
相关文章推荐
- Java中的时间和日期(上)
- Spring学习笔记AOP(二)
- java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
- Java常用类库——Arrays类(用于普通数组操作)、比较器(Comparable、Comparator 用于对象排序)的使用
- 谈谈枚举的新用法——java
- 修改IntelliJ中Maven项目的默认JDK版本
- java servlet与sql server
- maven学习笔记-基础
- java链表之--单向循环链表
- Java之定时任务详解
- 深入分析Java ClassLoader原理
- java加解密
- SpringMVC 数据校验
- 理解Java对象序列化
- java通过二分法对数组进行高效查找及插入操作
- 0004-java对象的序列化和反序列化
- Java设计模式之工厂方法模式
- Java实现插入排序算法
- java链表之--java双向链表的增删改查
- JAVA字符串格式化-String.format()的使用