|
|
@ -16,7 +16,11 @@ |
|
|
|
package org.nl.config.thread; |
|
|
|
|
|
|
|
|
|
|
|
import org.nl.config.SpringContextHolder; |
|
|
|
import org.dromara.dynamictp.core.support.DynamicTp; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
import org.springframework.context.annotation.Primary; |
|
|
|
|
|
|
|
import java.util.concurrent.ArrayBlockingQueue; |
|
|
|
import java.util.concurrent.ThreadPoolExecutor; |
|
|
@ -27,16 +31,22 @@ import java.util.concurrent.TimeUnit; |
|
|
|
* @author Zheng Jie |
|
|
|
* @date 2019年10月31日18:16:47 |
|
|
|
*/ |
|
|
|
@Configuration |
|
|
|
public class ThreadPoolExecutorUtil { |
|
|
|
|
|
|
|
public static ThreadPoolExecutor getPoll(){ |
|
|
|
AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); |
|
|
|
@Autowired |
|
|
|
private AsyncTaskProperties asyncTaskProperties; |
|
|
|
|
|
|
|
@Bean |
|
|
|
@Primary |
|
|
|
@DynamicTp("el-thread") |
|
|
|
public ThreadPoolExecutor threadPoolExecutor() { |
|
|
|
return new ThreadPoolExecutor( |
|
|
|
properties.getCorePoolSize(), |
|
|
|
properties.getMaxPoolSize(), |
|
|
|
properties.getKeepAliveSeconds(), |
|
|
|
asyncTaskProperties.getCorePoolSize(), |
|
|
|
asyncTaskProperties.getMaxPoolSize(), |
|
|
|
asyncTaskProperties.getKeepAliveSeconds(), |
|
|
|
TimeUnit.SECONDS, |
|
|
|
new ArrayBlockingQueue<>(properties.getQueueCapacity()), |
|
|
|
new ArrayBlockingQueue<>(asyncTaskProperties.getQueueCapacity()), |
|
|
|
new TheadFactoryName() |
|
|
|
); |
|
|
|
} |
|
|
|