Java IO

Reference

IO 类型

在 Linux 操作系统层面,IO 操作总共有 5 种

  • 阻塞 IO: 阻塞式 IO 操作请求发起以后,从网卡等待(读取数据),数据从内核到用户态的拷贝,整个 IO 过程中,用户的线程都是处于阻塞状态。
  • 非阻塞 IO: 非阻塞与阻塞的区别在于应用层不会等待网卡接收数据,即在内核数据未准备好之前,IO 将返回EWOULDBLOCK,用户端通过主动轮询,直到内核态数据准备好,然后再主动发起内核态数据到用户态的拷贝读操作(阻塞)。
  • IO 多路复用: 在非阻塞 IO 中,每个 IO 的应用层代码都需要主动地去内核态轮询直到数据准备好,在 IO 复用模型中,将轮询/事件驱动的工作交给一个单独的select/epoll的 IO 句柄去做,即所谓的 IO 复用。
  • 信号驱动: 信号驱动 IO 是向内核注册信号回调函数,在数据准备好的时候自动触发回调函数,进而可以在回调函数中启用数据的读取,即由内核告诉我们何时可以开始 IO 操作。
  • 异步 IO: 异步 IO 是将 IO 数据读取到用户态内存种的函数注册到系统中,在内核数据准备好的时候,系统调用该函数,自动完成内核态到用户态的拷贝,并通知应用态数据已经读取完成,即由内核告诉我们何时 IO 操作已经完成

qin

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏

打开支付宝扫一扫,即可进行扫码打赏哦