ruoyi框架源码阅读之--线程池、线程池知识巩固
这一章若伊框架里面的线程池倒是没啥讲解的,把代码贴上。主要整理一下自己对线程池知识点的巩固;例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
·
线程池、线程池知识巩固
文章目录
- 线程池、线程池知识巩固
- 前言
- 一、若伊线程池配置
- 二、使用步骤
- 三、整理自己对线程的理解
- 直接用现成的,写的很清晰,等若伊读完了会单独讲解线程,锁之类的实战
- 总结
前言
这一章若伊框架里面的线程池倒是没啥讲解的,把代码贴上。主要整理一下自己对线程池知识点的巩固;
一、若伊线程池配置
package com.ruoyi.framework.config;
import com.ruoyi.common.utils.Threads;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* 线程池配置,就是定义了两个线程池,甩进spring容器里面。
**/
@Configuration
public class ThreadPoolConfig {
// 核心线程池大小
private int corePoolSize = 50;
// 最大可创建的线程数
private int maxPoolSize = 200;
// 队列最大长度
private int queueCapacity = 1000;
// 线程池维护线程所允许的空闲时间
private int keepAliveSeconds = 300;
@Bean(name = "threadPoolTaskExecutor")
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setMaxPoolSize(maxPoolSize);
executor.setCorePoolSize(corePoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setKeepAliveSeconds(keepAliveSeconds);
// 线程池对拒绝任务(无线程可用)的处理策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
/**
* 执行周期性或定时任务
*/
@Bean(name = "scheduledExecutorService")
protected ScheduledExecutorService scheduledExecutorService() {
return new ScheduledThreadPoolExecutor(corePoolSize,
new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(),
new ThreadPoolExecutor.CallerRunsPolicy()) {
@Override
protected void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
Threads.printException(r, t);
}
};
}
}
二、使用步骤
// 引入异步操作任务调度池
private ScheduledExecutorService executor = SpringUtils.getBean("scheduledExecutorService");
// 引入线程池
private ThreadPoolTaskExecutor executor = SpringUtils.getBean("threadPoolTaskExecutor");
三、整理自己对线程的理解
直接用现成的,写的很清晰,等若伊读完了会单独讲解线程,锁之类的实战
转载于:https://blog.csdn.net/qq_43478694/article/details/123385279
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
更多推荐
已为社区贡献7条内容
所有评论(0)