mirror of https://github.com/ZhongFuCheng3y/austin
默认配置属性类: AsyncExecutionProperties yaml配置文档: austin-web/src/main/resources/application.ymlpull/6/head
parent
ff450e42f7
commit
be7efd485a
@ -0,0 +1,116 @@
|
|||||||
|
package com.java3y.austin.cron.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.autoconfigure.task.TaskExecutionProperties;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.concurrent.RejectedExecutionHandler;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: austin
|
||||||
|
* @description: spring 自定义线程池配置类
|
||||||
|
* @author: WhyWhatHow
|
||||||
|
* @create: 2022-02-27 09:41
|
||||||
|
* @see TaskExecutionProperties
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
@ConfigurationProperties("austin.async.task")
|
||||||
|
public class AsyncExecutionProperties {
|
||||||
|
/**
|
||||||
|
* 核心线程数,默认数量当前cpu核心线程数
|
||||||
|
*/
|
||||||
|
int coreSize;
|
||||||
|
/**
|
||||||
|
* 最大线程数 ,默认coreSize*2
|
||||||
|
*/
|
||||||
|
int maxSize;
|
||||||
|
/**
|
||||||
|
* 线程名前缀 eg: "austinAsyncExecutor-"
|
||||||
|
*/
|
||||||
|
private String threadNamePrefix = "austinAsyncExecutor-";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* queue capacity
|
||||||
|
*/
|
||||||
|
private int queueCapacity = 1000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线程最大存活时间,单位s
|
||||||
|
*/
|
||||||
|
private int keepAlive = 60;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否允许核心线程超时
|
||||||
|
*/
|
||||||
|
private boolean allowCoreThreadTimeout = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拒绝策略 ,默认callRun
|
||||||
|
*/
|
||||||
|
private RejectedEnum rejectedHandler = RejectedEnum.CALLRUNSPOLICY;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否在关机时等待任务完成 ,默认为true
|
||||||
|
*/
|
||||||
|
private boolean waitForTasksToCompleteOnShutDown = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 阻止关机的最大秒数 ,默认10s
|
||||||
|
*/
|
||||||
|
private int awaitTerminationSeconds = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化 核心线程数, 最大线程数, 以用户配置为主
|
||||||
|
*/
|
||||||
|
@PostConstruct
|
||||||
|
void init() {
|
||||||
|
if (coreSize <= 0) {
|
||||||
|
this.coreSize = Runtime.getRuntime().availableProcessors();
|
||||||
|
}
|
||||||
|
if (maxSize <= 0) {
|
||||||
|
this.maxSize = coreSize << 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拒绝策略枚举
|
||||||
|
*/
|
||||||
|
public enum RejectedEnum {
|
||||||
|
/**
|
||||||
|
* 直接抛出异常
|
||||||
|
*/
|
||||||
|
ABORTPOLICY(new ThreadPoolExecutor.AbortPolicy()),
|
||||||
|
/**
|
||||||
|
* 交个当前run_thread 运行
|
||||||
|
*/
|
||||||
|
CALLRUNSPOLICY(new ThreadPoolExecutor.CallerRunsPolicy()),
|
||||||
|
/***
|
||||||
|
* 直接丢掉
|
||||||
|
*/
|
||||||
|
DISCARDPOLICY(new ThreadPoolExecutor.DiscardPolicy()),
|
||||||
|
/**
|
||||||
|
* 丢掉队列中排队时间最久的任务
|
||||||
|
*/
|
||||||
|
DISCARDOLDESTPOLICY(new ThreadPoolExecutor.DiscardOldestPolicy());
|
||||||
|
/**
|
||||||
|
* 线程池默认拒绝策略
|
||||||
|
*/
|
||||||
|
private RejectedExecutionHandler handler;
|
||||||
|
|
||||||
|
RejectedEnum(RejectedExecutionHandler handler) {
|
||||||
|
this.handler = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public RejectedExecutionHandler getHandler() {
|
||||||
|
return handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHandler(RejectedExecutionHandler handler) {
|
||||||
|
this.handler = handler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
austin:
|
||||||
|
async:
|
||||||
|
task:
|
||||||
|
thread-name-prefix: "fun-task-" # task前缀名
|
||||||
|
max-size: 8 #最大线程数
|
||||||
|
core-size: 4 #核心线程数
|
||||||
|
queue-capacity: 100
|
||||||
|
keep-alive: 60
|
||||||
|
rejected-handler: callrunspolicy #拒绝策略,不能自定义
|
||||||
|
allow-core-thread-timeout: true # 是否允许核心线程超时,默认false
|
||||||
|
await-termination-seconds: 10 #
|
||||||
|
wait-for-tasks-to-complete-on-shut-down: true # 任务执行完,在关闭应用
|
||||||
|
|
Loading…
Reference in new issue