Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

57 строки
1.9 KiB

  1. package com.iformall.config;
  2. import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.scheduling.annotation.AsyncConfigurer;
  5. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  6. import org.springframework.stereotype.Component;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import java.lang.reflect.Method;
  10. import java.util.concurrent.Executor;
  11. import java.util.concurrent.ThreadPoolExecutor;
  12. @Component
  13. public class AsyncConfig implements AsyncConfigurer {
  14. private Logger logger = LoggerFactory.getLogger(getClass());
  15. @Value("${thread.pool.corePoolSize:10}")
  16. private int corePoolSize;
  17. @Value("${thread.pool.maxPoolSize:20}")
  18. private int maxPoolSize;
  19. @Value("${thread.pool.keepAliveSeconds:4}")
  20. private int keepAliveSeconds;
  21. @Value("${thread.pool.queueCapacity:512}")
  22. private int queueCapacity;
  23. @Override
  24. public Executor getAsyncExecutor() {
  25. ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
  26. executor.setCorePoolSize(corePoolSize);
  27. executor.setMaxPoolSize(maxPoolSize);
  28. executor.setKeepAliveSeconds(keepAliveSeconds);
  29. executor.setQueueCapacity(queueCapacity);
  30. executor.setRejectedExecutionHandler((Runnable r, ThreadPoolExecutor exe) -> {
  31. logger.warn("当前任务线程池队列已满.");
  32. });
  33. executor.initialize();
  34. return executor;
  35. }
  36. @Override
  37. public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
  38. return new AsyncUncaughtExceptionHandler() {
  39. @Override
  40. public void handleUncaughtException(Throwable ex, Method method, Object... params) {
  41. logger.error("线程池执行任务发生未知异常.", ex);
  42. }
  43. };
  44. }
  45. }