ThreadPoolConfig.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.simuwang.base.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.scheduling.annotation.EnableAsync;
  5. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  6. import java.util.concurrent.ThreadPoolExecutor;
  7. @Configuration
  8. @EnableAsync
  9. public class ThreadPoolConfig {
  10. @Bean("valuationExecutor")
  11. public ThreadPoolTaskExecutor valuationExecutor() {
  12. ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
  13. int cpuSize = Runtime.getRuntime().availableProcessors();
  14. cpuSize = Math.max(cpuSize/2, 1);
  15. taskExecutor.setCorePoolSize(cpuSize);
  16. taskExecutor.setMaxPoolSize(50);
  17. taskExecutor.setQueueCapacity(1024 * 4);
  18. taskExecutor.setKeepAliveSeconds(60);
  19. taskExecutor.setThreadNamePrefix("valuationExecutor--");
  20. taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
  21. taskExecutor.setAwaitTerminationSeconds(60);
  22. // 修改拒绝策略为使用当前线程执行
  23. taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
  24. // 初始化线程池
  25. taskExecutor.initialize();
  26. return taskExecutor;
  27. }
  28. @Bean("asyncExecutor")
  29. public ThreadPoolTaskExecutor asyncExecutor() {
  30. ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
  31. taskExecutor.setCorePoolSize(2);
  32. taskExecutor.setMaxPoolSize(50);
  33. taskExecutor.setQueueCapacity(50);
  34. taskExecutor.setKeepAliveSeconds(60);
  35. taskExecutor.setThreadNamePrefix("asyncExecutor--");
  36. taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
  37. taskExecutor.setAwaitTerminationSeconds(60);
  38. // 修改拒绝策略为使用当前线程执行
  39. taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
  40. // 初始化线程池
  41. taskExecutor.initialize();
  42. return taskExecutor;
  43. }
  44. }