本文共 2370 字,大约阅读时间需要 7 分钟。
public abstract class ThreadPoolInfoUtil { public static ConcurrentHashMapthreadPoolMap = new ConcurrentHashMap<>();}
@EnableAsync@Configurationpublic class PayThreadPoolConfig { @Value("${pay.threadNamePrefix}") private String threadNamePrefix; @Value("${pay.maxPoolSize}") private Integer maxPoolSize; @Value("${pay.corePoolSize}") private Integer corePoolSize; @Value("${pay.queueCapacity}") private Integer queueCapacity; @Bean(value = "paymentTaskExexutor") public AsyncTaskExecutor paymentTaskExexutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setThreadNamePrefix(threadNamePrefix); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.initialize(); ThreadPoolInfoUtil.threadPoolMap.put("paymentTaskExexutor", executor); return executor; }}
Slf4j@Component@EnableSchedulingpublic class ScheduleService { @Scheduled(fixedRate = 60000) // 每隔一分钟打印一次 public void scheduledFixedRate() { ThreadPoolTaskExecutor paymentTaskExexutor = ThreadPoolInfoUtil.threadPoolMap.get("paymentTaskExexutor"); ThreadPoolExecutor threadPoolExecutor = paymentTaskExexutor.getThreadPoolExecutor(); String threadNamePrefix = paymentTaskExexutor.getThreadNamePrefix(); long taskCount = threadPoolExecutor.getTaskCount(); long poolSize = threadPoolExecutor.getPoolSize(); long completedTaskCount = threadPoolExecutor.getCompletedTaskCount(); long activeCount = threadPoolExecutor.getActiveCount(); long queueSize = threadPoolExecutor.getQueue().size(); log.info("threadNamePrefix=>{}, taskCount=>{}, completedTaskCount=>{}, activeCount=>{}, queueSize=>{}", threadNamePrefix, taskCount, completedTaskCount, activeCount, queueSize); }}
转载地址:http://ggomi.baihongyu.com/