同步和异步通常用来形容方法的调用方式。
同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。
异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。
通常我们写的方法都是同步方法,方法间执行都是串行化的,在一个线程内运行。
同步是单线程
异步是多线程
依次执行的同步调用方式
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(); }
运行结果
总结:同步是根据步骤单线程运行,按套路出牌。