资料
《Java 中 NIO 看这一篇就够了》
https://zhuanlan.zhihu.com/p/369062109
使用例子多
《Java NIO用法详解》
https://zhuanlan.zhihu.com/p/56900880
讲解api+例子
《ByteBuffer详解》
https://zhuanlan.zhihu.com/p/56876443
讲解api+例子
《不断升级,Java之BIO、NIO、AIO的演变》
https://zhuanlan.zhihu.com/p/322398142
介绍三种IO模型,并且每个都有代码示例
笔记
同步:指实际拷贝数据的过程
阻塞:指等待IO事件发生的过程
BIO:执行某个读操作或写操作,会阻塞直到完成操作,所以为了同时进行多个读写操作需要创建多个线程
NIO:会一次获取多个就绪的读写事件,这个过程是阻塞的,然后读写也是同步的;但它可以单线程处理所有读写操作,节省了线程数
AIO:等待就绪事件是非阻塞的,实际读写过程也是异步的。是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。