文档章节

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

月夜筱风
 月夜筱风
发布于 2016/08/10 23:59
字数 652
阅读 74
收藏 0

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

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个

© 著作权归作者所有

共有 人打赏支持
月夜筱风
粉丝 0
博文 55
码字总数 19574
作品 0
闵行
程序员
私信 提问
iOS基础知识整理之多线程技术

多线程技术 多线程(multithreading) 是指软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。 原理...

无忌不悔
2018/11/07
0
0
Golang实现简单tcp服务器01 -- 概述

概述 Golang作为一门近些年来非常风光的开发语言, 其实用范围很广, 图形界面, web框架, 图像引擎等等. 由于其语言特性简化了并发/多核的开发, 受到了很大的关注. 而使用它进行服务器开发, 也...

victoriest
2015/06/02
0
0
高性能缓存服务器 nuster v1.8.8.1 支持 HTTP/2,多线程

高性能缓存服务器 nuster v1.8.8.1 已发布。本次更新主要是升级到 HAProxy v1.8.8, 支持 HTTP/2 和多线程。 项目主页 https://github.com/jiangwenyuan/nuster 介绍 nuster 是一个基于 HAPr...

nuster
2018/05/08
1K
4
多进程 VS 多线程 VS 线程池 VS EventLoop

多进程 VS 多线程 VS 线程池 VS EventLoop 在现在的编程过程中,经常听到多进程,多线程,线程池,EventLoop 的概念,选择一个正确的驱动模型,有助于提升代码的性能。 注:本文仅仅讨论并发...

精通吹水
2016/04/20
274
0
spring+ibatis整合之jar包引入配置篇

1.spring-2.5.6.SEC03,再加上spring-webmvc- 3.2.3,马上动手springmvc的工作, 2.使用了spring的注解方式,发生了在spring-2.5.6.SEC03的spring-core包缺少对springmvc的@Controller等一些的...

无起
2012/12/28
0
1

没有更多内容

加载失败,请刷新页面

加载更多

产品分析感悟

我终于写完了我的第一份产品分析,按理说,内心应该很高兴才对,但是并没有,我此刻心情很沉重。 好吧,我全交代。。。 在这写篇文章之前,我仿佛打了鸡血般,以为自己打开了新的知识大门,我...

铸剑为犁413
5分钟前
0
0
如何使用less实现随机下雪动画详解

冬天来了,设计师说摇摇乐的场景需要随机下落的雪花动画,第一时间就想到的方法是canvas比较好,项目非常紧急,然而小程序对canvas支持不够友好,容易在项目中出现无法预估的兼容性问题 ,马...

前端小攻略
11分钟前
0
0
一个程序员的成长之路(转)

转自全民直播CTO张云龙讲述的一个程序员的成长之路,觉得有一定的借鉴性,分享一下。 https://github.com/fouber/blog/issues/41

酷沃
11分钟前
0
0
https

进入阿里云域名后台,修改DNS为阿里云官方DNS(默认为官方),然后点击“免费开启SSL证书” 点击“申请”、“验证”并等待签发 然后根据自己的服务器类型下载对应的证书 我使用的是lnmpa工具...

临江仙卜算子
38分钟前
0
0
Quartz监听器Listerner

概述 Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知。Quartz监听器主要有JobListener、TriggerListener、SchedulerListener三种,顾名思义,分别表示任务、...

大笨象会跳舞吧
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部