@Async 的使用
1、在启动类中加上注解@EnableAsync启用异步
2、在使用异步的方法上加上注解@Async,自己写一个线程池,指定线程池。不建议使用默认的线程池。
在线程池应用中,参考阿里巴巴java开发规范:线程池不允许使用Executors去创建,不允许使用系统默认的线程池, 推荐通过ThreadPoolExecutor的方式,这样的处理方式让开发的工程师更加明确线程池的运行规则,规避资源耗尽的风险 我这个功能的业务逻辑是:配送派工完成后给顾客发送微信公众号消息,提醒顾客货物开始配送了 于是在派工完成业务逻辑完成后调用推送消息的方法,是无返回值的调用
方法上加注解
在启动类上写自己的线程池
测试是异步调用成了
3、注意事项
- 异步方法不能与异步方法在同一个类中
- 如果使用SpringBoot框架必须在启动类中增加@EnableAsync注解
- 在Async 方法上标注@Transactional是没用的。 在Async 方法调用的方法上标注@Transactional 有效。
- 类或者方法中使用@Async注解,类上标有该注解表示类中方法都是异步方法,方法上标有该注解表示方法是异步方法
- 注解的方法必须是public方法,不能是static
参考文章:
https://blog.csdn.net/houxian1103/article/details/110299410
https://blog.csdn.net/qq_44695727/article/details/120082934