文档章节

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

月夜筱风
 月夜筱风
发布于 2016/08/10 23:59
字数 652
阅读 70
收藏 0
点赞 0
评论 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
闵行
程序员
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
05/08
0
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
多进程 VS 多线程 VS 线程池 VS EventLoop

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

精通吹水
2016/04/20
274
0
golang VS php 性能对比

原文 http://www.isno.cn/2013/12/golang-vs-php/ 在工作的项目中,我的主要开发语言是php,因需求或者为弥补php的缺陷,需要为php做各种各样的扩展,比如php本身不支持线程,没有队列,进程也...

神仙
2013/12/19
24.4K
33
转载--大神的“思想”

1、基本概念 什么是进程: 进程是在系统运行的一个程序,每个进程之间是独立的,每个进程均运行在其专有且受保护的内存空间内。 什么是线程: 一个进程想要执行任务,必须得有线程(至少一个...

细雨微风轻诉流年
2016/09/06
19
0
error at ::0 formal unbound in pointcut

在使用声明方式的AOP编程中,遇到以下两个问题,解决方法如下: (1)error at ::0 formal unbound in pointcut 解决方法:去掉函数通知函数中的参数,比如:将 @Before("execution(public ...

Oscarfff
2015/04/07
0
0
多线程的概念

作者: songlixing 一、程序与进程 1、程序:一段静态的代码。 2、进程:程序的一次动态执行过程,它对应从代码加载、执行到执行完毕的一个完整过程。 3、进程也称任务,支持多个进程同时执行...

虫虫
2011/12/02
657
1
iOS 多线程 - 回答你关于线程的所有问题

先从最基本的概念性问题开始 (1)进程:在系统中正在运行的一个应用程序(比如QQ、播放器等),每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。 (2)线程:一个进程的...

linweida
2016/09/10
3
0
LiteSetup多线程优化方案

LiteSetup 轻量级安装程序框架 项目中: 主要是2方面可以多线程优化处理:UI和核心代码,核心代码的压缩多线程处理 1.最开始UI和核心代码在一个线程,导致可能假死现象, 解决方案:给核心代...

梦想游戏人
2016/06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CoreText进阶(七)-添加自定义View和对其

CoreText进阶(七)-添加自定义View和对其 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更多...

aron1992
8分钟前
0
0
Python爬虫 爬取百合网的女人们和男人们

学Python也有段时间了,目前学到了Python的类。个人感觉Python的类不应称之为类,而应称之为数据类型,只是数据类型而已!只是数据类型而已!只是数据类型而已!重要的事情说三篇。 据书上说...

p柯西
19分钟前
0
0
在Java中,你真的会日期转换吗

1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormatis a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows fo......

Java小铺
28分钟前
0
0
Linux系统梳理---系统搭建(二):tomcat的安装和使用

上一章讲到JDK的安装使用,这一章主要记录下服务器tomcat的安装以及部署一个项目. 1.下载tomcat,这里下载的是apache-tomcat-8.5.32.tar.gz 2.创建文件夹,便于管理,和JDK一样,在usr目录下创建t...

勤奋的蚂蚁
38分钟前
0
0
ES15-聚合

1.Terms Aggregation 分组聚合 2.Filter Aggregation 过滤聚合

贾峰uk
39分钟前
0
0
【2018.07.19学习笔记】【linux高级知识 20.27-20.30】

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数

lgsxp
42分钟前
0
0
10.32/10.33 rsync通过服务同步~10.35 screen工具

通过服务的方式同步要编辑配置文件:[root@linux-xl ~]# vim /etc/rsyncd.confport=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.43.21[tes...

洗香香
45分钟前
0
0
与女儿谈商业模式 (3):沃尔玛的成功模式

分类:与女儿谈商业模式 | 标签: 经济学 沃尔玛 陈志武 2007-05-10 09:09阅读(11279)评论(30) 与女儿谈商业模式 (3):沃尔玛的成功模式 陈志武 /文 沃尔玛(Wal-Mart)是另一个有意思的财...

祖冲之
52分钟前
0
0
网页加载速度优化方法总结

1、减少请求 最大的性能漏洞就是一个页面需要发起几十个网络请求来获取诸如样式表、脚本或者图片这样的资源,这个在相对低带宽和高延迟的移动设备连接上来说影响更严重。 2、整合资源 对开发...

Jack088
57分钟前
0
0
dubbo学习

https://blog.csdn.net/houshaolin/article/details/76408399

喵五郎
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部