以注册送积分模拟异步调用
启动类添加注解 @EnableAsync
@SpringBootApplication
@EnableAsync
public class SpringbootTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootTestApplication.class, args);
}
}
被调用的类或方法添加注解 @Async
@Service
@Slf4j
public class AsyncTaskServiceImpl {
ExecutorService executorService= Executors.newFixedThreadPool(5);
@Async("ex")
public void sendJiFen() {
log.info("注册送积分");
}
@Bean("ex")
public Executor jiFenExecutors() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
//线程名称前缀
executor.setThreadNamePrefix("积分-thread-");
return executor;
}
}
上述的jiFenExecutors 这个线程池也可以不写
调用测试
@Slf4j
@RestController
@RequestMapping("/async")
public class AsyncController {
@Resource
AsyncTaskServiceImpl asyncTaskService;
@RequestMapping("/register")
public void register(){
log.info("注册成功");
/**
* 异步送积分
*/
asyncTaskService.sendJiFen();
}
}
看我们打印出来的日志
2023-04-06 12:19:08.430 INFO 15832 --- [nio-9098-exec-8] com.qyf.controller.AsyncController : 注册成功
2023-04-06 12:19:08.433 INFO 15832 --- [ 积分-thread-1] c.qyf.service.impl.AsyncTaskServiceImpl : 注册送积分