NIO是相对于blocking IO来说的,Non-blocking I/O也就是NIO。非阻塞式的IO。
NIO针对IO而进行的改进,所以是基于原IO设计的。
NIO实现IO非阻塞的核心是下面三部分:
Channel通道,Buffer缓存区,Selector选择器
先说说他们之间是如何配合实现非阻塞的。
运行机制
程序直接和缓存对象buffer进行数据交互。这样对于程序来说非常方便操作。
每个buffer需要接通一个channel,channel的另一边是底层目标,例如文件或者socket之类的。
每个线程有一个selector,用于自动管理channel,检查channel状态,切换不同的channel执行数据交换工作。
所以channel只在底层和buffer直接做数据交换媒介,每个channel都有一个buffer,buffer和程序直接打交道,selector在channel阻塞时切换channel执行另外的任务,这就是非阻塞的运行机制。