一:异步和同步的区别

同步:调用者要一直等待调用结果的通知后才能进行后续的执行
异步:指被调用方先返回应答让调用者先回去,然后再计算调用结果,计算完最终结果后再通知并返回给调用方
理解:同步、异步的讨论对象是被调用者(服务提供者),重点在于获得调用结果的消息通知方式上

二:阻塞和非阻塞的区别

阻塞:调用方一直在等待而且别的事情什么都不做,当前线/进程都会被挂起,啥也不干
非阻塞:调用在发出去后,调用方先去忙别的事情,不会阻塞当前进/线程,而会立即返回
理解:阻塞、非阻塞的讨论对象是调用者(服务请求者),重点在于等消息时候的行为,调用者是否能干其他事

三:
同步阻塞:调用发出后,调用者一直等待调用结果的通知,什么也不干
同步非阻塞:调用发出后,会立马收到答复,如果得到的不是完整的资源,调用者会周期循环轮询发送IO请求,直到真正获得调用结果的通知,在此期间调用者可以去做别的
异步阻塞:调用不会马上发出,安排一个时间再发起请求,什么也不干,等待调用结果的通知
异步非阻塞:调用不会马上发出,安排一个时间再发起请求,当发出请求,可以马上得到答复,如果得到的不是完整的资源,调用者调用者会周期循环轮询发送IO请求,直到真正获得调用结果的通知,在此期间调用者可以去做别的

四:NIO三大组件

4.1 channel

4.2 Buffer

4.3 Selector