什么是异步调用?
类似于多线程运行代码。
写个接口
@RequestMapping("/printMsg")
public void printMsg(){
System.out.println("###############sendMsg1##################");
user1Service.printMsg();
System.out.println("###############sendMsg4##################");
}
user1Service.printMsg();
public void printMsg() {
System.out.println("###############sendMsg2##################");
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
System.out.println("###############sendMsg3##################");
}
正常同步执行,毫无疑问结果应该为:
此时我在user1Service.printMsg()方法加上@Async注解,那么调用这个方法时就等于把这个方法放入多线程进行执行
@Async
public void printMsg() {
System.out.println("###############sendMsg2##################");
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
System.out.println("###############sendMsg3##################");
}
启动加上@EnableAsync
@EnableAsync
@EnableScheduling
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
测试结果,顺序变成了1423