@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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.