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 是并行的

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

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

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

  • 相关阅读:
    XML-SAX
    aio-epoll
    aio-java
    设计模式-策略模式、命令模式
    java-io一
    计算机网络-tcp的可靠性
    计算机网络-tcp简介
    设计模式-单例模式、工厂模式
    Cookie和Session简述
    mysql-优化二
  • 原文地址:https://www.cnblogs.com/linghu-java/p/13835863.html
Copyright © 2011-2022 走看看