利用spring3.0+特性之开启多线程
2016-08-10 00:00
204 查看
第一篇博客,想象还有点小激动,不足之处,需要大神们多指点
Spring的多线程,可以大大加快返回速度响应。如果公司不使用Mq,或者kafka等,或者不想用java原始的写法,可以考虑利用spring的这个高级特性
示例上使用springboot和thymeleaf快速搭建的项目,为了测试简单,代码就直接写在controller中了
第一步
在类上加上注释**@EnableAsync**(org.springframework.scheduling.annotation.EnableAsync)
表示让这个类支持spring多线程,
代码如下:
** 第二步,在方法上添加@Async**,org.springframework.scheduling.annotation.Async,表示是一个异步方法
代码如下:
结果如下(可以看到并不是按照顺序执行的):
如果2个注解任何一个不加,结果如下(按照顺序执行的):
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 3.0新增特性与功能前瞻
- spring 3.0新特性学习1
- Myeclipse——Spring 从入门到精通三 Spring3.0以后新特性之基于Annotation的注入
- Spring3.0新特性
- [spring] spring 3.0的新特性
- Spring 3.0中的新增特性与增强特性
- 利用Cocos2dx-3.0新物理特性模拟弹珠迷宫
- spring3.0 MVC初步5-利用拦截器防止SQL注入
- spring3.0新特性
- Servlet 3.0 新特性详解(servlet是单实例多线程的,线程池数量有限)
- spring 3.0新特性学习1
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(五)
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)
- Spring3.0新特性 - REST架构的支持
- WordPress3.0新特性——多用户多站点开启
- Spring 3.0 新特性
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(三)
- Spring3.0正式版(GA)的九个特性
- spring3.0新特性简单总结
- 利用 Cocos2dx-3.0 新物理特性模拟弹珠迷宫