Browse Source

DepSystemFirst

DevDatabase
adiao 3 years ago
parent
commit
890a3fce1f
  1. 21
      pom.xml
  2. 45
      src/main/java/co/depsystem/application2/config/thread/AsynsThread.java
  3. 27
      src/main/java/co/depsystem/application2/config/thread/ThreadConfig.java
  4. 14
      src/main/java/co/depsystem/application2/config/thread/ThreadExecutorUtil.java
  5. 8
      src/main/resources/META-INF/additional-spring-configuration-metadata.json
  6. 8
      src/main/resources/application.properties

21
pom.xml

@ -28,6 +28,12 @@ @@ -28,6 +28,12 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis -->
<dependency>
@ -45,6 +51,21 @@ @@ -45,6 +51,21 @@
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.5.1</version>
<exclusions>
<exclusion>
<artifactId>jcl-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

45
src/main/java/co/depsystem/application2/config/thread/AsynsThread.java

@ -7,7 +7,50 @@ @@ -7,7 +7,50 @@
package co.depsystem.application2.config.thread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
public class AsynsThread {
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* 协程
* 线程
*
* @author adiao
*/
@Slf4j
@Configuration
public class AsynsThread implements AsyncConfigurer {
private final ThreadConfig thread;
public AsynsThread(ThreadConfig thread) {
this.thread = thread;
}
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(thread.getCorePoolSize());
executor.setMaxPoolSize(thread.getMaxPoolSize());
executor.setQueueCapacity(thread.getQueueCapacity());
executor.setKeepAliveSeconds(thread.getKeepAliveSeconds());
executor.setThreadNamePrefix("de-async-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return (throwable, method, objects) -> {
log.error("====" + throwable.getMessage() + "====", throwable);
log.error("exception method:" + method.getName());
};
}
}

27
src/main/java/co/depsystem/application2/config/thread/ThreadConfig.java

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
/**
* @author JOJO
* @class ThreadConfig
* @date 2023/3/6
* @apiNote
*/
package co.depsystem.application2.config.thread;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties("task.pool")
public class ThreadConfig {
private int corePoolSize;
private int maxPoolSize;
private int keepAliveSeconds;
private int queueCapacity;
}

14
src/main/java/co/depsystem/application2/config/thread/ThreadExecutorUtil.java

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
/**
* @author JOJO
* @class ThreadExecutorUtil
* @date 2023/3/6
* @apiNote
*/
package co.depsystem.application2.config.thread;
public class ThreadExecutorUtil {
public static ThreadExecutorUtil start() {
ThreadConfig threadConfig = SpringContextHolder.getBean(AsynsThread.class)
}
}

8
src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"properties": [
{
"name": "task.pool.core-pool-size",
"type": "java.lang.String",
"description": "Description for task.pool.core-pool-size."
}
] }

8
src/main/resources/application.properties

@ -7,3 +7,11 @@ spring.datasource.url=localhost:3306 @@ -7,3 +7,11 @@ spring.datasource.url=localhost:3306
spring.datasource.name=root
spring.datasource.password=adiao
# 核心线程池大小
task.pool.core-pool-size=10
# 最大线程数
task.pool.max-pool-size=10
# 活跃时间
task.pool.keep-alive-seconds=10
# 队列容量
task.pool.queue-capacity=10

Loading…
Cancel
Save