简述
同步不是阻塞,异步不是非阻塞,这是两套概念,而在真实案例中,往往是两两结合的
同步阻塞
客户端请求服务端,当服务端处理时间很长,这时客户端不能干别的事,服务端也不能干别的事,直到服务端处理完成,返回客户端结果。可想而知,效率极其低下。
这,其实就是BIO
同步非阻塞
客户端请求服务端,当服务端处理时间很长,这时客户端不能干别的事,但是服务端可以去处理别的事情。
这,其实就是NIO
异步阻塞
客户端请求服务端,当服务端处理时间很长,这时客户端可以去干别的事情,服务端不能干别的事。
等服务端处理完成,客户端得到回调后再处理服务端的响应。类似于ajax的异步请求。
异步非阻塞
客户端请求服务端,当服务端处理时间很长,这时客户端可以去干别的事情,服务端也可以去干别的事。
这,其实就是AIO
总结
所以,同步异步在于客户端可否去干别的事,阻塞非阻塞在于服务端可否去干别的事
举个栗子
举个拉粑粑的例子
BIO
: 没坑位,我得一直盯着,防止别人截胡
NIO
:没坑位,反正我不急,我过会再来
AIO
:没坑位,我不急我出去玩,等有人拉完了会过来告诉我
其实换成吃饭等桌也是可以的哈哈