1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | import java.util.concurrent.ThreadPoolExecutor;
  import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  @Configuration @EnableAsync public class ThreadPool { 	public static final int DEFAULT_THREADS_NUMS = 2 * Runtime.getRuntime().availableProcessors(); 	@Bean("taskExecutor") 	public ThreadPoolTaskExecutor taskExecutor() { 		ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
  		int maxPoolSize = 2 * DEFAULT_THREADS_NUMS; 		threadPoolTaskExecutor.setCorePoolSize(DEFAULT_THREADS_NUMS); 		threadPoolTaskExecutor.setMaxPoolSize(maxPoolSize); 		threadPoolTaskExecutor.setQueueCapacity(maxPoolSize); 		threadPoolTaskExecutor.setKeepAliveSeconds(60); 		threadPoolTaskExecutor.setThreadNamePrefix("Async-Thread-"); 		threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
  		return threadPoolTaskExecutor; 	} }
   |