💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
### 使用@Async实现异步调用 启动加上@EnableAsync,需要执行异步方法上加入@Async 在方法加上@Async之后 底层使用多线程技术 ~~~ @Service @Slf4j public class MemberService { @Async//相当于这个方法重新开辟了单独线程进行执行 public String addMemberAndEmail(){ log.info("2"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info("3"); return "hello"; } } ~~~ ~~~ @Slf4j @RestController public class MemberController { @Autowired private MemberService memberService; @RequestMapping("/addMemberAndEmail") public String addMemberAndEmail(){ log.info("1"); String result=memberService.addMemberAndEmail(); log.info("4"); return result; } } ~~~ 运行结果 ![](https://box.kancloud.cn/fc07f4787186ec9caac41d983d531512_929x162.png) ~~~ 启动类上要加@EnableAsync注解 @EnableAsync//开启异步调用 public class AppConfig {} ~~~ ~~~ 实现原理 @Service @Slf4j public class MemberService { //@Async//相当于这个方法重新开辟了单独线程进行执行 //思路:使用AOP技术在运行时创建一个单独线程进行执行 public String addMemberAndEmail(){ new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub log.info("2"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info("3"); } }).start(); return "hello"; // log.info("2"); // try { // Thread.sleep(5000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // log.info("3"); // return "hello"; } } ~~~