在自动审核的方法上加上@Async注解(标明要异步调用)
@Async//异步方法调用public void audit(WmNews wmNews) {//这个方法处理时间很长,单体异步思想,线程池}
在自媒体引导类中使用@EnableAsync注解开启异步调用
@SpringBootApplication
@EnableAsync//开启异步调用
public class MediaApp {public static void main(String[] args) {SpringApplication.run(MediaApp.class, args);}
}
SpringBoot默认的异步使用的线程池不是很好
我们一般会自定义一个线程池
@Configuration
public class TaskPoolConfig {//自带线程工厂@Bean("asyncExecutor")public Executor asyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); // 核心线程池数executor.setCorePoolSize(4);//io密集型,CPU密集型,//最大线程池数executor.setMaxPoolSize(20);//任务队列的容量executor.setQueueCapacity(200);// 非核心线程的存活时间executor.setKeepAliveSeconds(60);//Seconds// 线程池的前缀名称executor.setThreadNamePrefix("my_asyncExecutor-");executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//调用主线程,让主线程处理,拒绝策略executor.initialize();return executor;}
}