一、阻塞和非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
概括:关注的是接口调用(发出请求)后等待数据返回时的状态
,描述的是一种状态
。
阻塞型
:被挂起无法执行其他操作的则是阻塞型的;
非阻塞型
:可以被立即「抽离」去完成其他「任务」的则是非阻塞型的;
二、同步和异步
同步和异步关注的是消息通信机制。
概括:是任务完成时消息通知的方式,描述的是一种行为方式
同步
:调用方
盲目主动问询
的方式是同步调用;
异步
:被调用方
自己主动通知调用方
任务已完成的方式是异步调用。
1、同步机制: 发送方发送请求之后,需要等接收方发回响应后才接着发
2、异步机制: 发送方发送一个请求之后不等待接收方响应这个请求,就继续发送下个请求。
3、阻塞调用调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回,该线程在此过程中不能进行其他处理
4、非阻塞调用调用结果不能马上返回,当前线程也不会被挂起,而是立即返回执行下一个调用。(网络通信中主要指的是网络套接字Socket的阻塞和非阻塞方式,而soket 的实质也就是IO操作)
5、同步阻塞方式 发送方发送请求之后一直等待响应。接收方处理请求时进行的IO操作如果不能马上等到返回结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作
6、同步非阻塞方式发送方发送请求之后,一直等待响应,接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,取做其他事情。但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。一直等到IO操作完成后,接收方获得结果响应发送发后,接收方才进入下一次请求过程。(实际不应用)
7、异步阻塞方式 发送方向接收方请求后,不等待响应,可以继续其他工作,接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。 (实际不应用)
8、异步非阻塞方式发送方向接收方请求后,不等待响应,可以继续其他工作,接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回取做其他事情。当IO操作完成以后,将完成状态和结果通知接收方,接收方在响应发送方。(效率最高)