zoukankan      html  css  js  c++  java
  • 同步、异步、阻塞、非阻塞

    一、概念

    1、同步:A调用B,B处理直到获得结果,才返回给A。需要调用者一直等待和确认调用结果是否返回,然后继续往下执行。

    2、异步:A调用B,无需等待结果,B通过状态通知A或回调函数来处理。调用结果返回时,会以消息或回调的方式通知调用者。

    3、阻塞:A调用B,A被挂起直到B返回结果给A,才能继续执行。调用结果返回前,当前线程挂起不能够处理其他任务,一直等待调用结果返回。

    4、非阻塞:A调用B,A不会被挂起,A可以执行其他操作。调用结果返回前,当前线程不挂起,可以处理其他任务。

    二、区别

      同步与异步更关注交互双方是否可以同时工作。以同步的方式完成任务意味着多个任务的完成次序是串行的,假设任务 A 依赖于任务 B,那么任务 A 必须等到任务 B 完成之后才能继续,执行流程为 A->B;

      以异步的方式完成任务意味着多个任务的完成可以是并行的,这种情况多适用于任务之间没有因果关系,假如任务 A 中需要执行任务 B,而任务 A 的完成不依赖于任务 B 的结果,那么任务 A 调用任务 B 后可以继续执行后续步骤而不需要等待任务 B 完成,也不关心任务 B 是否执行完毕,此时任务 A 和任务 B 是并行的

      同步和异步是个操作方式,阻塞和非阻塞是线程的一种状态。

      同步、异步指的是被调用者结果返回时通知线程的一种机制,

      阻塞、非阻塞指的是调用结果返回进程前的状态,是挂起还是继续处理其他任务。

  • 相关阅读:
    JVM源码分析 规格严格
    Smack 规格严格
    Java动态编译 规格严格
    RPM仓库地址 规格严格
    使用控制台程序测试DLL依赖
    TestNG 使用入门
    白羊座二:星星的一周
    路遇两骗子
    《落地,请开手机》里面最经典的一句台词
    今天明白的一个道理
  • 原文地址:https://www.cnblogs.com/linghu-java/p/13835863.html
Copyright © 2011-2022 走看看