这篇文章主要介绍了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双大括号{{}}的具体使用 2023-03-15
- MyBatis-Plus自定义通用的方法实现 2023-07-15
- 一文带你搞懂Java中方法重写与方法重载的区别 2023-07-14
- Java Web开发中过滤器和监听器使用详解 2023-06-30
- Java多线程学习笔记之三内存屏障与Java内存模型 2023-09-01
- Java List的get方法 2023-10-08
- Java实现插入排序算法可视化的示例代码 2023-04-23
- RocketMQ Push 消费模型示例详解 2023-05-24
- Spring Cloud Config分布式配置中心使用介绍详解 2023-05-07
- java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法 2023-09-01
