同步和异步通常用来形容方法的调用方式。
同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。
异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。
通常我们写的方法都是同步方法,方法间执行都是串行化的,在一个线程内运行。
同步是单线程
异步是多线程
依次执行的同步调用方式
public class ThreadText {
public static void eatMeal() {
System.out.println("已经烧开水了");
try {
//模拟等待凉水的时间
Thread.sleep(999);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("水的温度正好了吃药吧");
}
public static void shop() {
System.out.println("出去遛弯");
}
//执行主方法
public static void main(String[] args) {
eatMeal();
shop();
}
}
输出结果
我们修改一下eatMeal()方法,改为异步方式,通常使用线程开启异步,在springboot中可以使用(@EnableAsync和@Async)开启异步模式。
public class ThreadText {
public static void eatMeal() {
System.out.println("已经烧开水了");
new Thread(()->{
try {
//模拟等待凉水的时间
Thread.sleep(999);
System.out.println("水的温度正好了吃药吧");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
public static void shop() {
System.out.println("出去遛弯");
}
public static void main(String[] args) {
eatMeal();
shop();
}
}
运行结果
总结:同步是根据步骤单线程运行,按套路出牌。 异步是根据现实多线程运行,符合正常人的逻辑思维。


