同步和异步

简介: 同步和异步通常用来形容方法的调用方式。同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。

同步和异步通常用来形容方法的调用方式。


同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。

异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。

通常我们写的方法都是同步方法,方法间执行都是串行化的,在一个线程内运行。

同步是单线程

异步是多线程


依次执行的同步调用方式

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();
    }

输出结果

image.png

我们修改一下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();
    }

运行结果

image.png

总结:同步是根据步骤单线程运行,按套路出牌。

异步是根据现实多线程运行,符合正常人的逻辑思维。

相关文章
|
前端开发 JavaScript UED
|
前端开发
异步转同步的几种方法
在循环等待中,我们可以使用一个变量来指示异步操作是否已完成。然后,我们可以在循环中检查该变量,如果它指示异步操作已完成,则退出循环。
570 0
|
7月前
|
负载均衡 算法 前端开发
同步和异步
同步和异步
93 0
|
7月前
|
Python
同步和异步的区别
同步和异步的区别
|
7月前
|
Java 数据处理 调度
异步、半同步、同步
异步、半同步、同步
160 0
|
JavaScript 前端开发 UED
同步和异步区别
同步和异步区别
160 0
|
7月前
同步和异步的区别?
同步和异步的区别?
173 0
|
7月前
|
存储 JavaScript 前端开发
|
7月前
|
前端开发 JavaScript
同步和异步有什么区别
同步和异步有什么区别
258 0
|
消息中间件 前端开发 数据库
同步与异步详细区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
下一篇
DataWorks