package com.dji.sample.configuration;
|
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
import java.util.concurrent.*;
|
|
/**
|
*
|
* @author sean.zhou
|
* @date 2021/11/10
|
* @version 0.1
|
*/
|
@Configuration
|
public class GlobalThreadPoolConfiguration {
|
|
@Value("${thread.pool.core-pool-size: 10}")
|
private int corePoolSize;
|
|
@Value("${thread.pool.maximum-pool-size: 20}")
|
private int maximumPoolSize;
|
|
@Value("${thread.pool.keep-alive-time: 60}")
|
private long keepAliveTime;
|
|
@Value("${thread.pool.queue.capacity: 1000}")
|
private int capacity;
|
|
/**
|
* A custom thread pool.
|
* @return
|
*/
|
@Bean
|
public Executor threadPool() {
|
return new ThreadPoolExecutor(corePoolSize,
|
maximumPoolSize, keepAliveTime,
|
TimeUnit.SECONDS, new LinkedBlockingQueue<>(capacity),
|
Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardOldestPolicy());
|
}
|
|
}
|