当前位置: 代码迷 >> 综合 >> spring-boot异步线程池
  详细解决方案

spring-boot异步线程池

热度:28   发布时间:2024-02-07 22:03:29.0
@Bean("taskExecutor")public Executor taskExecutor(){ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//配置核心线程数taskExecutor.setCorePoolSize(100);//配置最大线程数taskExecutor.setMaxPoolSize(500);//配置队列大小taskExecutor.setQueueCapacity(200);//线程池维护线程所允许的空闲时间taskExecutor.setKeepAliveSeconds(60);//配置线程池中的线程的名称前缀taskExecutor.setThreadNamePrefix("async-service-");//当调度器shutdown被调用时等待当前被调度的任务完成taskExecutor.setWaitForTasksToCompleteOnShutdown(true);//等待时长taskExecutor.setAwaitTerminationSeconds(60);/*** 第一种AbortPolicy:不执行新任务,直接抛出异常,提示线程池已满* 第二种DisCardPolicy:不执行新任务,也不抛出异常* 第三种DisCardOldSetPolicy:将消息队列中的第一个任务替换为当前新进来的任务执行* 第四种CallerRunsPolicy:直接调用execute来执行当前任务*/taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());taskExecutor.initialize();return taskExecutor;}

 

  相关解决方案