AsyncTaskPoolConfig.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package cn.cslg.pas.common.config;
  2. import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.core.task.AsyncTaskExecutor;
  6. import org.springframework.scheduling.annotation.AsyncConfigurer;
  7. import org.springframework.scheduling.annotation.EnableAsync;
  8. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  9. import java.util.concurrent.Executor;
  10. import java.util.concurrent.ThreadPoolExecutor;
  11. @EnableAsync
  12. @Configuration
  13. public class AsyncTaskPoolConfig implements AsyncConfigurer {
  14. @Bean("singleThreadAsyncTaskExecutor")
  15. public AsyncTaskExecutor singleThreadAsyncTaskExecutor() {
  16. ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
  17. executor.setCorePoolSize(1);
  18. executor.setMaxPoolSize(1);
  19. executor.setQueueCapacity(64);
  20. executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
  21. executor.initialize();
  22. return executor;
  23. }
  24. @Override
  25. public Executor getAsyncExecutor() {
  26. ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
  27. //配置核心线程数
  28. executor.setCorePoolSize(8);
  29. //配置最大线程数
  30. executor.setMaxPoolSize(16);
  31. //配置队列大小
  32. executor.setQueueCapacity(64);
  33. //配置线程池中的线程的名称前缀
  34. executor.setThreadNamePrefix("async-service-");
  35. // 设置拒绝策略:当pool已经达到max size的时候,如何处理新任务
  36. // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
  37. executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
  38. //执行初始化
  39. executor.initialize();
  40. return executor;
  41. }
  42. @Override
  43. public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
  44. return new AsyncExceptionHandler();
  45. }
  46. }