项目中遇到了, Feign 调用微服务超时的问题,而调用的方法返回值为 void, 所以这种情况:如果非必要等待执行方法成功,则可以使用 spring 注解 @Async, 完美解决超时问题,从而程序可以正常执行
异步与同步的区别
同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。
@Async介绍
在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。
基于Java配置的启用方式
@Service
@EnableAsync
public class SyncServiceImpl {...}
代码中异步调用无返回值的使用方式
@Service
@EnableAsync
public class SyncServiceImpl {
@Async
public void syncTest() {
AtomicInteger page = new AtomicInteger(0);
while (true) {
if (page.page.get() == 50) {
break;
}
logger.info("<sync> 第" + page + "页...");
page.addAndGet(1);
}
logger.info("<sync> 异步结束");
}
}
网友评论