这篇文章主要介绍了Spring与JDK线程池的简单使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
1.配置自定义共享线程池(Spring线程池)
@Configuration
@EnableAsync
public class ThreadPoolConfig{
//主要任务的调度,计划执行
@Bean("taskScheduler")
public Executor createScheduler(){
// 创建一个线程池对象
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
// 定义一个线程池大小
scheduler.setPoolSize(100);
// 线程池名的前缀
scheduler.setThreadNamePrefix("taskScheduler-");
// 设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
scheduler.setWaitForTasksToCompleteOnShutdown(true);
// 设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保应用最后能够被关闭,而不是阻塞住
scheduler.setAwaitTerminationSeconds(60);
// 线程池对拒绝任务的处理策略,当线程池没有处理能力的时候,该策略会直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务
scheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return scheduler;
}
//主要任务的执行
@Bean("taskExecutor")
public Executor createExecutor(){
// 创建一个线程池对象
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//核心线程池大小
executor.setCorePoolSize(10);
//最大线程数
executor.setMaxPoolSize(30);
//队列容量
executor.setQueueCapacity(100);
//活跃时间
executor.setKeepAliveSeconds(60);
//线程名字前缀
executor.setThreadNamePrefix("taskExecutor-");
// 设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
executor.setWaitForTasksToCompleteOnShutdown(true);
// 线程池对拒绝任务的处理策略,当线程池没有处理能力的时候,该策略会直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
2.编写执行任务对象与具体任务逻辑方法
@Component
public class TaskComponent{
@Async("taskExecutor")
public void doTaskExecutor() {
System.out.println("任务开始执行!!!");
//具体的执行任务
//。。。。。。。
}
// //有返回值(ObjectVo为自己定义的返回类型)
//@Async("taskExecutor")
//public Future<ObjectVo> doTaskExecutor() {
// System.out.println("任务开始执行!!!");
// //具体的执行任务
// //。。。。。。。
// ObjectVo result=new ObjectVo();
// return new AsyncResult<>(result);
/
织梦狗教程
本文标题为:Spring 与 JDK 线程池的简单使用示例详解


基础教程推荐
猜你喜欢
- Java去掉小数点后面无效0的方案与建议 2023-02-18
- 一文了解Java 线程池的正确使用姿势 2023-06-17
- Project Reactor源码解析publishOn使用示例 2023-04-12
- 全局记录Feign的请求和响应日志方式 2023-01-09
- Java File类的概述及常用方法使用详解 2023-05-18
- Java使用EasyExcel进行单元格合并的问题详解 2023-01-18
- 用java实现扫雷游戏 2022-12-06
- JVM分析之类加载机制详解 2023-04-06
- SpringBoot配置文件中密码属性加密的实现 2023-03-11
- 工厂方法在Spring框架中的运用 2023-06-23