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

本文介绍了如何使用Spring框架实现多线程,通过Spring Boot和Thymeleaf快速搭建项目,并在控制器中直接编写代码进行测试。文章展示了如何通过注解@EnableAsync使类支持Spring多线程,以及如何在方法上使用@Async注解来定义异步任务。

第一篇博客,想象还有点小激动,不足之处,需要大神们多指点

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个

转载于:https://my.oschina.net/lijunhao2016/blog/730902

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值