bio:同步阻塞
nio:同步非阻塞
aio:异步非阻塞
这里面主要是理解同步与阻塞是什么意思
同步/异步指的是应用程序需要阻塞住,通过轮询或事件监听的方式来主动的获取结果。而异步则是操作系统有数据了之后直接调用我们应用程序提供的回调函数来处理。
阻塞与非阻塞指的是我们在读写的时候是否需要等数据准备好了才开始处理下面的过程。
这里举一个例子来说明它们三者之间有什么区别
bio:我到一个餐馆去点了一个盖浇饭,然后坐下来等着老板做好。
nio:我到一个餐馆去点了一个盖浇饭,然后去做其他事情了,过了一会儿我问老板好了没,如果好了,我拿走,没做好我就再去做其他事情,过会儿再来,直到最后我拿到了饭
aio: 我到一个餐馆点了一个菜,然后告诉他我在附近的地址,让他做好了后送到我家,我就直接回家了。
通过上面举的例子是为了说明同步和异步的重点在于结果是我自己去拿的还是别人有结果了送给我的,而阻塞和非阻塞是在数据没准备好的时候,我是否要等待数据准备好。