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操作

相关推荐
little_xianzhong11 小时前
Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
java·开发语言
刘 大 望11 小时前
传输层:UDP/TCP协议
java·网络·网络协议·tcp/ip·udp·信息与通信
小胖墩有点瘦11 小时前
【基于协同过滤的校园二手交易平台】
java·vue·毕业设计·springboot·计算机毕业设计·协同过滤·校园二手交易平台
我真的是大笨蛋11 小时前
G1 垃圾收集器深入解析
java·jvm·笔记·缓存
Dersun11 小时前
python学习进阶之异常和文件操作(三)
开发语言·python·学习·json
我好喜欢你~11 小时前
C#---Expression(表达式)
开发语言·c#
ytadpole11 小时前
揭秘 XXL-JOB 调度:从代码深处看路由策略的精妙设计
java·后端
27^×11 小时前
Linux 常用命令速查手册:从入门到实战的高频指令整理
java·大数据·linux
学Java的bb11 小时前
后端Web实战-Spring原理
java·spring boot·spring
Tiger_shl12 小时前
【.Net技术栈梳理】01-核心框架与运行时(CLR)
开发语言·.net