Spring任务执行器(TaskExecutor)
Spring任务执行器(TaskExecutor)
Spring通州任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor
可实现一个基于线程的TaskExecutor,而实际开发中任务一般是非阻塞的,即异步的,所以我们要在配置类中
通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务。
实例
1.配置类
package com.wisely.highlight_spring4.ch3.taskexecutor; import java.util.concurrent.Executor; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
@ComponentScan("com.wisely.highlight_spring4.ch3.taskexecutor")
@EnableAsync //1
public class TaskExecutorConfig implements AsyncConfigurer{//2 @Override
public Executor getAsyncExecutor() {//2
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(10);
taskExecutor.setQueueCapacity(25);
taskExecutor.initialize();
return taskExecutor;
} @Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
} 代码解释
1.利用@EnableAsync注解开启异步任务支持。
2.配置类实现AsyncConfigurer接口并重写getAsyncExecutor方法,并返回一个ThreadPoolTaskExecutor,这样我们就获得了已个基于线程池TaskExecutor. 任务执行类
package com.wisely.highlight_spring4.ch3.taskexecutor; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Service
public class AsyncTaskService { @Async //1
public void executeAsyncTask(Integer i){
System.out.println("执行异步任务 "+i);
} @Async
public void executeAsyncTaskPlus(Integer i){
System.out.println("执行异步任务+1"+(i+1));
}
} 代码解释
1.通过@Async注解表明该方法是个异步方法,如果注解在类级别,则表明该类所以的方法都是异步的,
而这里的方法自动被注入使用ThreadPoolTaskExecutor作为TaskExecutor。 运行
package com.wisely.highlight_spring4.ch3.taskexecutor; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(TaskExecutorConfig.class); AsyncTaskService asyncTaskService = context.getBean(AsyncTaskService.class); for(int i =0 ;i<10;i++){
asyncTaskService.executeAsyncTask(i);
asyncTaskService.executeAsyncTaskPlus(i);
}
context.close();
}
}
aaarticlea/png;base64,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" alt="" />
结果是并发执行而不是顺序执行的。
Spring任务执行器(TaskExecutor)的更多相关文章
- spring任务执行器与任务调度器(TaskExecutor And TaskScheduler)
对于多线程及周期性调度相关的操作,spring框架提供了TaskExecutor和TaskScheduler接口为异步执行和任务调度.并提供了相关实现类给开发者使用.(只记录采用注解的使用形式,对于X ...
- spring多线程与定时任务
本篇主要描述一下spring的多线程的使用与定时任务的使用. 1.spring多线程任务的使用 spring通过任务执行器TaskExecutor来实现多线程与并发编程.通常使用ThreadPoolT ...
- 在Spring中使用异步事件实现同步事务
结合Scala+Spring,我们将采取一个很简单的场景:下订单,然后发送一封电子邮件. 编制一个服务: @Serviceclass OrderService @Autowired() (orderD ...
- 异步任务spring @Async注解源码解析
1.引子 开启异步任务使用方法: 1).方法上加@Async注解 2).启动类或者配置类上@EnableAsync 2.源码解析 虽然spring5已经出来了,但是我们还是使用的spring4,本文就 ...
- spring多线程
Spring4.x高级话题(二):多线程 一. 点睛 Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池 ...
- 【转载】Spring @Async 源码解读。
由于工作中经常需要使用到异步操作,一直在使用@Async, 今天抽空学习了一下它的执行原理,刚好看到一篇写的很棒的文章,这里转载过来做个记录,感谢原作者的无私奉献. 原文章链接地址:https://w ...
- Spring Boot实战(3) Spring高级话题
1. Spring Aware Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的.即你可以将你的容器替换成别的容器. 实际项目中,不可避免地会用到Spring容 ...
- Spring使用_进阶
概述 本文主要写了几个关于Spring Aware,多线程,计划任务(定时任务),条件注解,组合注解,元注解,Spring测试的小例子以及关于@Enable*注解的工作原理的理解. Spring Aw ...
- 任务调度(02)Spring Schedule
任务调度(02)Spring Schedule [toc] Spring 3.0 提供两种任务调度方式:一是定时任务调度:二是异步任务调度.这两种任务调度方式都是基于 JUC 实现的,是一种非常轻量级 ...
随机推荐
- php数组·的方法-数组与数据结构
/*数组与数据结构*/ //shuffle() 随机打乱数组 //array_push() 数组末尾添加元素 //array_pop() 数组末尾删除元素 //array_shift() 数组首位删除 ...
- Spark RDD持久化说明
以上说明出自林大贵老师关于Hadoop.spark书籍,如有兴趣请自行搜索购买! 这是我的GitHub分享的一些笔记:https://github.com/mahailuo/pyspark_notes
- Mac 系统变量
vim .bash_profile ========================= MAVEN_HOME = < ... > export MAVEN_HOME =========== ...
- Neutron命令测试4
jolin@jolin:~$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface ...
- spring DelegatingFilterProxy管理过滤器
安全过滤器链 Spring Security的web架构是完全基于标准的servlet过滤器的.它没有在内部使用servlet或任何其他基于servlet的框架(比如spring mvc),所以它没有 ...
- Zend Optimizer安装、配置
Zend Optimizer用优化代码的方法来提高php应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化.这里,我们下载最新版 ...
- web.xml文件配置详解以及实例说明
1.web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件. 2.部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出 ...
- 参数化拼接in查询条件,个人备份
/// <summary> /// 查询数据报表 /// </summary> /// <param name="Tr ...
- Java基础入门 - Hello world
JDK安装完成后,将一下代码写入文件HelloWorld.java中 // HelloWorld.java public class HelloWorld { public static void m ...
- Spring-cloud微服务 Eureka学习教程-分布式搭建EurekaServer、EurekaClient(中级)
我们这里只有一台服务器,所以我们先仿集群搭建. 完整demo项目代码:https://github.com/wades2/EurekaDemo2 在这之前我们先分析分析Eureka相比其他注册中心的好 ...