@Override
@Async
public void sendTemplateMsg(WxMpTemplateMessage msg,String appid) {
TaskExcutor.submit(() -> {
String result;
try {
wxService.switchover(appid);
result = wxService.getTemplateMsgService().sendTemplateMsg(msg);
} catch (WxErrorException e) {
result = e.getMessage();
}
//保存发送日志
TemplateMsgLog log = new TemplateMsgLog(msg,appid, result);
templateMsgLogService.addLog(log);
});
}
代码如上,明明是用了 @async 注解,这个注解的本质不是使用了线程池吗?为什么代码里面还要利用线程池去执行?经过尝试,如果去除 TaskExcutor.submit(),这个函数也能异步执行的,那这么写的目的是什么呢? 这是个开源项目,具体可见 https://github.com/niefy/wx-api/blob/master/src/main/java/com/github/niefy/modules/wx/service/impl/TemplateMsgServiceImpl.java