15点睛Spring4.1-TaskExecutor
程序员文章站
2023-12-22 12:51:40
...
15.1 TaskExecutor
- spring的TaskExecutor为在spring环境下进行并发的多线程编程提供了支持;
- 使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor;
- 使用@EnableAsync开启异步任务支持;
- 使用@Async注解方法是异步方法;
15.2 示例
15.2.1 声明taskExecutor
package com.wisely.task.executor;
import java.util.concurrent.Executor;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
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
@EnableAsync
public class DemoConfig implements AsyncConfigurer{
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(10);
taskExecutor.setQueueCapacity(25);
taskExecutor.initialize();
return taskExecutor;
}
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
15.2.2 异步任务实现代码
package com.wisely.task.executor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
@Component
public class DemoAsyncTask {
@Async
public void executeAsyncTask(Integer i){
System.out.println("执行异步任务:"+i);
}
@Async
public void executeAsyncTaskPlus(Integer i){
System.out.println("执行异步任务+1:"+(i+1);
}
}
15.2.3 测试
package com.wisely.task.executor;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.wisely.task.executor");
DemoAsyncTask task = context.getBean(DemoAsyncTask.class);
for(int i =0 ;i<10;i++){
task.executeAsyncTask(i);
task.executeAsyncTaskPlus(i);
}
context.close();
}
}
输出结果(结果是并发执行而不是顺序执行的):
执行异步任务+1:10
执行异步任务:6
执行异步任务:4
执行异步任务+1:7
执行异步任务:3
执行异步任务:1
执行异步任务:5
执行异步任务:7
执行异步任务+1:8
执行异步任务:8
执行异步任务+1:9
执行异步任务:9
执行异步任务+1:1
执行异步任务:0
执行异步任务+1:2
执行异步任务+1:3
执行异步任务:2
执行异步任务+1:4
执行异步任务+1:5
执行异步任务+1:6
新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。
京东地址:http://item.jd.com/11894632.html
当当地址:http://product.dangdang.com/23926195.html
亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6
淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail
或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。
推荐阅读
-
15点睛Spring4.1-TaskExecutor
-
18点睛Spring4.1-Meta Annotation
-
手机下载要小心!15个扣费类恶意程序曝光
-
Tensorflow2.0入门教程15:CNN网络添加BN层
-
mysql 5.7.5 m15 winx64安装配置方法图文教程
-
东北地区比较好的15所大学,能考上在北方好就业,找工作很受欢迎
-
Windows 下noinstall方式安装 mysql 5.7.5 m15 winx64(推荐)
-
2015年4月10日15点开启预售 Apple Watch预约购买详解
-
mysql 5.7.5 m15 winx64安装配置图文教程
-
mysql 5.7.5 m15 winx64安装配置方法图文教程