您的位置:首页 > 编程语言 > Java开发

利用spring3.0+特性之开启多线程

2016-08-10 00:00 204 查看
第一篇博客,想象还有点小激动,不足之处,需要大神们多指点

Spring的多线程,可以大大加快返回速度响应。如果公司不使用Mq,或者kafka等,或者不想用java原始的写法,可以考虑利用spring的这个高级特性
示例上使用springboot和thymeleaf快速搭建的项目,为了测试简单,代码就直接写在controller中了

第一步
在类上加上注释**@EnableAsync**(org.springframework.scheduling.annotation.EnableAsync)
表示让这个类支持spring多线程,
代码如下:

@Controller
/**表示支持多线程*/
@EnableAsync
public class TestController {

@Autowired
private AsyncTaskService asyncTaskService;

/**
* 主页
*/
@RequestMapping(value="/")
public String getTest(){
//测试异步操作
for (int j = 0; j < 10; j++) {
asyncTaskService.exectueAsyncTask(j);
asyncTaskService.exectueAsyncTask2(j);
}
return "index";
}

** 第二步,在方法上添加@Async**,org.springframework.scheduling.annotation.Async,表示是一个异步方法
代码如下:

@Service
public class AsyncTaskService {
/**
* 表示是一个异步任务
*/
@Async
public void exectueAsyncTask(Integer i){
System.out.println("第一个任务的第"+i+"个");
}

/**
* 表示是一个异步任务
*/
@Async
public void exectueAsyncTask2(Integer i){
System.out.println("第二个任务的第"+i+"个");
}
}

结果如下(可以看到并不是按照顺序执行的):

第二个任务的第0个
第一个任务的第8个
第一个任务的第9个
第二个任务的第2个
第一个任务的第1个
第二个任务的第3个
第二个任务的第4个
第二个任务的第5个
第二个任务的第6个
第一个任务的第2个
第二个任务的第7个
第一个任务的第3个
第一个任务的第4个
第二个任务的第8个
第二个任务的第9个
第一个任务的第5个
第一个任务的第6个
第一个任务的第7个
第二个任务的第1个

如果2个注解任何一个不加,结果如下(按照顺序执行的):

第二个任务的第0个
第一个任务的第1个
第二个任务的第1个
第一个任务的第2个
第二个任务的第2个
第一个任务的第3个
第二个任务的第3个
第一个任务的第4个
第二个任务的第4个
第一个任务的第5个
第二个任务的第5个
第一个任务的第6个
第二个任务的第6个
第一个任务的第7个
第二个任务的第7个
第一个任务的第8个
第二个任务的第8个
第一个任务的第9个
第二个任务的第9个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring async 多线程