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

相关推荐
椰猫子1 分钟前
Javaweb(Filter、Listener、AJAX、JSON)
java·开发语言
盛世宏博北京28 分钟前
以太网温湿度传感器运维技巧,提升设备稳定性与使用寿命
开发语言·php·以太网温湿度传感器
朝新_28 分钟前
【Spring AI 】核心知识体系梳理:从入门到实战
java·人工智能·spring
一 乐29 分钟前
旅游|基于springboot + vue旅游信息推荐系统(源码+数据库+文档)
java·vue.js·spring boot·论文·旅游·毕设·旅游信息推荐系统
代码改善世界1 小时前
【MATLAB初阶】矩阵操作(一)
开发语言·matlab·矩阵
覆东流1 小时前
第1天:Python环境搭建 & 第一个程序
开发语言·后端·python
我命由我123451 小时前
Android 开发中,关于 Gradle 的 distributionUrl 的一些问题
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
橙露1 小时前
SpringBoot 全局异常处理:优雅封装统一返回格式
java·spring boot·后端
awei09161 小时前
MinIO配置自定义crossdomain.xml跨域策略(Nginx反向代理实现)
xml·java·nginx
谁怕平生太急1 小时前
面试题记录:在线数据迁移
java·数据库·spring