JAVA中同步、异步、阻塞和非阻塞有何本质差异?
- 内容介绍
- 相关推荐
本文共计1245个文字,预计阅读时间需要5分钟。
同步和异步,阻塞和非阻塞,是大家经常听到的概念,但它们实际上是来自不同维度来描述一件事情。很容易混为一谈。
1. 同步和异步同步和异步描述的是消息通信的机制。同步:当一个操作需要等待另一个操作完成后再继续执行时,我们称之为同步。异步:当一个操作不需要等待另一个操作完成就可以继续执行时,我们称之为异步。
2. 阻塞和非阻塞阻塞和非阻塞描述的是操作对线程的影响。阻塞:当一个操作需要等待某个条件成立时,线程会暂停执行,直到条件成立。非阻塞:当一个操作需要等待某个条件成立时,线程不会暂停执行,而是继续执行其他任务。
同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈。
1. 同步和异步
同步和异步描述的是消息通信的机制。
同步
当一个request发送出去以后,会得到一个response,这整个过程就是一个同步调用的过程。哪怕response为空,或者response的返回特别快,但是针对这一次请求而言就是一个同步的调用。
异步
当一个request发送出去以后,没有得到想要的response,而是通过后面的callback、状态或者通知的方式获得结果。可以这么理解,对于异步请求分两步:
1)调用方发送request没有返回对应的response(可能是一个空的response);
2)服务提供方将response处理完成以后通过callback的方式通知调用方。
对于1)而言是同步操作(调用方请求服务方),对于2)而言也是同步操作(服务方回掉调用方)。
本文共计1245个文字,预计阅读时间需要5分钟。
同步和异步,阻塞和非阻塞,是大家经常听到的概念,但它们实际上是来自不同维度来描述一件事情。很容易混为一谈。
1. 同步和异步同步和异步描述的是消息通信的机制。同步:当一个操作需要等待另一个操作完成后再继续执行时,我们称之为同步。异步:当一个操作不需要等待另一个操作完成就可以继续执行时,我们称之为异步。
2. 阻塞和非阻塞阻塞和非阻塞描述的是操作对线程的影响。阻塞:当一个操作需要等待某个条件成立时,线程会暂停执行,直到条件成立。非阻塞:当一个操作需要等待某个条件成立时,线程不会暂停执行,而是继续执行其他任务。
同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈。
1. 同步和异步
同步和异步描述的是消息通信的机制。
同步
当一个request发送出去以后,会得到一个response,这整个过程就是一个同步调用的过程。哪怕response为空,或者response的返回特别快,但是针对这一次请求而言就是一个同步的调用。
异步
当一个request发送出去以后,没有得到想要的response,而是通过后面的callback、状态或者通知的方式获得结果。可以这么理解,对于异步请求分两步:
1)调用方发送request没有返回对应的response(可能是一个空的response);
2)服务提供方将response处理完成以后通过callback的方式通知调用方。
对于1)而言是同步操作(调用方请求服务方),对于2)而言也是同步操作(服务方回掉调用方)。

