Java NIO操作
NIO是相对于blocking IO来说的,New-blocking I/O也就是NIO。是升级的IO而不是非阻塞IO。
NIO针对IO而进行的改进,所以是基于原IO设计的。
NIO的核心是下面三部分:
Channel通道,Buffer缓存区,Selector选择器
先说说他们之间是如何配合的。
运行机制
程序直接和缓存对象buffer进行数据交互。这样对于程序来说非常方便操作。
每个buffer需要接通一个channel,channel的另一边是底层目标,例如文件或者socket之类的。
每个线程有一个selector,用于自动管理channel,检查channel状态,切换不同的channel执行数据交换工作。
所以channel只在底层和buffer直接做数据交换媒介,每个channel都有一个buffer,buffer和程序直接打交道,selector在channel阻塞时切换channel执行另外的任务,这就是NIO的运行机制。
Buffer操作
buffer主要有这几个方法:
clear清空或者叫做初始化buffer
put和get或者array来操作内容
flipc切换buffer写读模式(容易忘记使用)
static allocate分配一个buffer
Channel操作
read和write操作