Spring Boot使用多线程
来源:互联网 发布:云创客淘宝采集软件 编辑:程序博客网 时间:2024/06/04 19:10
引言:Spring作为容器为我们托管对象,但是有时我们需要多线程执行任务,那么我们该如何配置呢?
解决:利用java的线程池Executor执行任务
步骤
1.配置TaskExecutor
这里直接将线程池注入
CorePoolSize代表执行任务的线程数量
public class TaskExecutorConfig implements AsyncConfigurer{//实现AsyncConfigurer接口 @Bean public Executor getAsyncExecutor() {//实现AsyncConfigurer接口并重写getAsyncExecutor方法,并返回一个ThreadPoolTaskExecutor,这样我们就获得了一个基于线程池TaskExecutor ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(5); taskExecutor.setMaxPoolSize(10); taskExecutor.setQueueCapacity(25); taskExecutor.initialize(); return taskExecutor; } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return null; }}这里我们得到了一个基于java的线程池Executer的线程池,然后设置了部分参数,返回了一个实例
2.编写我们需要执行的任务,并注明service
@Service@Slf4jpublic class AsyncTaskService { @Async public void dataTranslate(int i) { log.info("启动了线程"+i); }}
这里用日志打印
3.将线程池对象注入,并调用任务service。
最后在application中开始异步支持@EnableAsync
调用结果:可以看到,是不同的线程执行了打印任务,而且根据cpu时间片,抢占,可以看到线程执行顺序也发生了变化,说明是异步执行
总结:Spring Boot对多线程的支持和Spring没什么两样,就是需要先配置线程池,然后注入bean,再写异步方法,最后调用就可以了。
关于多线程中还有许多问题,如线程同步等就需要在写代码时多注意多思考了。另外,合理配置线程池参数也很重要
阅读全文
0 0
- Spring Boot使用多线程
- spring boot 集成多线程
- Spring-Boot中如何使用多线程处理任务
- Spring-boot使用Quartz实现多线程调度任务
- 开始使用Spring Boot
- Spring Boot 使用
- spring-boot 使用log4j
- spring boot 使用@ConfigurationProperties
- spring boot使用redis
- 为什么使用spring boot
- Spring Boot Profile使用
- spring boot使用redis
- Spring Boot 使用JdbcTemplate
- III. 使用Spring Boot
- Spring Boot使用properties
- spring boot使用基本常识
- spring boot使用记录
- [spring-boot] 使用redis
- Netty学习之NIO---通道Channel(一)
- UVA
- C语言及程序设计初步 Lesson 9 变量 实践项目:程序改错
- 关于用hibernate获取某个数据库中的主键的所有的值的方法
- tensorflow 学习笔记13 RNN LSTM结构预测正弦(sin)函数
- Spring Boot使用多线程
- 机器学习系列笔记1:《统计学习》李航博士 第一章 统计学习方法概论
- 安卓手机投屏到win10电脑
- Flask-Login的使用
- html 去li的原点和a的下划线
- 牧佑---oneonezeroDream---jsoup解析html
- 图像降采样的实现详解
- 什么时候用css背景图,什么时候用img标签?
- [机器学习入门] 经典台大李宏毅机器学习课程从这里开始