|
@@ -3,6 +3,7 @@ package com.smcic.core.conf;
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
+import org.springframework.scheduling.annotation.EnableAsync;
|
|
|
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
import java.util.concurrent.ThreadFactory;
|
|
import java.util.concurrent.ThreadFactory;
|
|
@@ -10,6 +11,8 @@ import java.util.concurrent.ThreadPoolExecutor;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@Configuration
|
|
@Configuration
|
|
|
|
+
|
|
|
|
+@EnableAsync
|
|
public class ThreadPoolFactory {
|
|
public class ThreadPoolFactory {
|
|
|
|
|
|
@Bean(name="threadPoolExecutor")
|
|
@Bean(name="threadPoolExecutor")
|
|
@@ -27,4 +30,20 @@ public class ThreadPoolFactory {
|
|
new LinkedBlockingQueue<>(),
|
|
new LinkedBlockingQueue<>(),
|
|
namedThreadFactory);
|
|
namedThreadFactory);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Bean(name="taskExecutor")
|
|
|
|
+ public ThreadPoolExecutor taskExecutor(){
|
|
|
|
+ // 给线程指定名称,方便查看线程编号
|
|
|
|
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
|
|
|
|
+ .setNameFormat("task-thread-pool-%d").build();
|
|
|
|
+
|
|
|
|
+ // 创建线程池
|
|
|
|
+
|
|
|
|
+ return new ThreadPoolExecutor(8,
|
|
|
|
+ 128,
|
|
|
|
+ 300,
|
|
|
|
+ TimeUnit.SECONDS,
|
|
|
|
+ new LinkedBlockingQueue<>(),
|
|
|
|
+ namedThreadFactory);
|
|
|
|
+ }
|
|
}
|
|
}
|