这篇文章主要介绍了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 线程池的简单使用示例详解
基础教程推荐
猜你喜欢
- springboot下使用shiro自定义filter的个人经验分享 2024-02-27
- JavaWeb 实现验证码功能(demo) 2024-04-14
- Java+mysql实现学籍管理系统 2023-03-16
- Java中EnvironmentAware 接口的作用 2023-01-23
- Java编写实现窗体程序显示日历 2023-01-02
- 是否适合从javabean类更新数据库? 2023-11-04
- 运用El表达式截取字符串/获取list的长度实例 2023-08-01
- 使用Java和WebSocket实现网页聊天室实例代码 2024-02-25
- 深入理解约瑟夫环的数学优化方法 2024-03-07
- JSP 动态树的实现 2023-12-17
