(一) 同步阻塞IO -> BIO
阻塞IO 指的是需要内核IO操作彻底完成后,才返回到用户空间执行用户的操作
Java 中默认创建的socket都是阻塞的
(二) 同步非阻塞IO -> NIO
非阻塞IO,指的是用户空间的程序不需要等待内核IO彻底完成,可以立即返回用户空间执行用户的操作,即处于非阻塞状态。
非阻塞IO要求socket被设置为NONBLOCK
(三) IO多路复用( IO Multiplexing)
经典的Reactor反应器设计模式,有时也称为异步阻塞IO
Java中的Selector 选择器 和 Linux中的epoll都是这种模型
(四) 异步IO
用户空间的线程向内核空间注册了各种IO事件的回调函数,由内核去主动调用
但愿如人意