Spring线程池ThreadPoolTaskExecutor使用
时间:2021-09-17
本文章向大家介绍Spring线程池ThreadPoolTaskExecutor使用,主要包括Spring线程池ThreadPoolTaskExecutor使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
创建线程池
import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; /** * @description: LizzThreadPoolTaskExecutor * @author: lizz */ @Configuration @Slf4j public class LizzThreadPoolTaskExecutor { /** * @return */ @Bean("lizzThreadExecutor") public Executor asyncServiceExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setBeanName("lizzPool"); executor.setCorePoolSize(4);//配置核心线程数 executor.setMaxPoolSize(8);//配置最大线程数 executor.setKeepAliveSeconds(30); executor.setQueueCapacity(100);//配置队列大小 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());//拒绝策略 executor.setWaitForTasksToCompleteOnShutdown(true); executor.initialize();//执行初始化 log.info("ThreadPool init success"); return executor; } }
使用
@Slf4j @RestController public class LizzController{ @Autowired @Qualifier("lizzThreadExecutor") private Executor threadPool; @RequestMapping("go") public String go() { log.info("controller go") threadPool.execute(new Runnable() { @Override public void run() {
//业务代码 try { log.info("threadPool go") } catch (Exception e) { log.error("into db type:{},key:{},encryptValue:{};", type, key, encryptValue, e); } } }); } }
控制台输出
[nio-8070-exec-1] c.l.f.c.s.controller.LizzController : controller go
[ lizzPool-1] c.l.f.c.s.controller.LizzController : threadPool go
原文地址:https://www.cnblogs.com/JNU-Iot-Longxin/p/15305050.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Serverless|Framework——图文玩转 AWS Lambda
- C++入门指南及实战 第一步 概述及经典HelloWorld
- C++入门指南及实战 第二步 HelloWorld及扩展详解
- 依托于GitLab持续集成基础配置和使用
- C++入门指南及实战 第三步 基本变量
- 最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
- FlexSDK工具包的介绍与编译使用
- 《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程
- Ansible自动化运维学习笔记5
- Ansible自动化运维学习笔记4
- 《零基础看得懂的C语言入门教程 》——(三)轻轻松松理解第一个C语言程序
- Python自动化运维2
- AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助
- 【面试题】734- 从一道面试题谈谈对 EventLoop 的理解
- (上)python3 selenium3 从框架实现代码学习selenium让你事半功倍