美文网首页Java饥人谷技术博客
聊聊同步和异步(1)

聊聊同步和异步(1)

作者: _挑灯看剑_ | 来源:发表于2016-10-30 15:07 被阅读63次

同步:一个任务A的完成需要依赖另一个任务B,只有任务B完成之后,任务A才算是完成任务。
异步:一个任务A需要依赖任务B,任务A只是通知任务B要完成什么样的工作,任务B立马执行,而与此同时任务A已经算是完成整个任务了。当B完成任务时,通知任务A,表明任务B已经完成任务了。

同步和异步应用在IO操作上,有一下这么几种组合:同步阻塞+异步非阻塞+同步非阻塞。接下来就上述三种组合搭配图例进行描述。

  • 同步阻塞

同步阻塞.png

阻塞:用户线程在调用业务处理组件时,可能业务处理组件非常耗时,因此在此期间用户线程什么都不能干,必须等待。因此用户线程处于等待状态。
同步:用户线程一直等待业务组件处理业务完成,直到业务组件完成之后,用户线程才能返回。

  • 同步非阻塞

同步非阻塞.png
非阻塞:用户线程在调用业务组件处理业务的时候,它通知完业务组件就直接返回,而此时用户线程可以不必等待业务组件处理耗时的业务处理,可以处理其他的业务。
同步:用户线程在处理其他业务的同时,依旧启动一个线程不断的轮询业务组件是否完成了耗时的业务处理。如果用户线程轮询到业务处理完毕,则意味着用户线程完成此次业务处理。
  • 异步非阻塞

异步非阻塞.png

非阻塞:用户线程在通知完业务组件处理业务之后,立即返回。而不再等待业务组件的处理,去处理其他的业务。
异步:用户线程在调用业务组件之后,只是通知业务组件,然后直接返回。耗时的业务组件是否什么时候开始,处理什么业务都和用户线程无关。等待业务组件耗时的操作完成之后,业务组件会通知用户线程。

  • 异步回调函数

异步回调函数.png
业务组件完成业务之后如何通知用户程序?

用户得到通知,即用户自定义了一个方法,这个方法得到调用,使得用户感知到。
例如:业务组件是为了从数据库(io)中读取相应的数据,封装成java对象。而在读取完毕数据之后,处理完毕业务之后,会通知用户程序已经处理完毕,而用户程序负责将这些数据转化成json格式,渲染到前端页面。
这就涉及到回调函数。
用户程序通知业务组件去处理业务逻辑,立即返回,用户程序并不知道业务组件什么时候完成业务处理,但是用户程序需要将业务处理的结果进行下一步的处理。
因此,可以将这个处理封装成一个函数,在通知业务组件的处理业务的时候,传递给业务组件。
意思是:等你处理完业务之后,要调用我传递给你的这个函数,这个函数的目的是,将你返回的数据转化成json格式,渲染到前端页面。这就是所谓的回调,本来用户程序已经返回,结果业务处理完成之后,又回调用户程序的函数。

异步回调函数.png

相关文章

  • 聊聊同步和异步(1)

    同步:一个任务A的完成需要依赖另一个任务B,只有任务B完成之后,任务A才算是完成任务。异步:一个任务A需要依赖任务...

  • 异步化,高并发大杀器

    聊聊如何让项目异步化的一些事。 1.同步和异步,阻塞和非阻塞 同步和异步,阻塞和非阻塞, 这个几个词已经是老生常谈...

  • 聊聊同步和异步(2)

    传递回调函数 1、使用Javascript编写 Servlet() 作为用户调用的方法,其通知业务组件servic...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • JS 函数的执行时机

    1.同步和异步的区别 我们都知道JS里面有同步和异步的区别,怎么理解同步和异步呢。一家餐厅吧来了5个客人,同步的意...

  • GCD详解

    一 使用步骤 创建队列(串行队列或并发队列) 调用函数(同步或异步) 二 重要概念 1,同步和异步 同步或异步最大...

  • I/O模型

    在学习I/O模型前,我们首先介绍同步和异步、阻塞和非阻塞的概念 1. 同步和异步 同步和异步是针对应用程序和内核的...

  • JS之异步和单线程

    问题 1、同步和异步的区别?分别举例 2、setTimeout相关 3、前端中使用异步的场景 知识点 异步和同步 ...

  • 同步/异步 阻塞/非阻塞

    1.同步与异步 同步和异步关注的是消息通信机制(synchronous communication/ asynch...

  • 怎样理解阻塞非阻塞与同步异步的区别?

    1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ async...

网友评论

    本文标题:聊聊同步和异步(1)

    本文链接:https://www.haomeiwen.com/subject/lehuuttx.html