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

相关推荐
东离与糖宝8 小时前
2026 Java AI框架选型:Spring AI/LangChain4j企业级对比
java·人工智能
郝学胜-神的一滴8 小时前
[力扣 20] 栈解千愁:有效括号序列的优雅实现与深度解析
java·数据结构·c++·算法·leetcode·职场和发展
林姜泽樾8 小时前
python入门第六课,其他字符串格式化和input
开发语言·python·pycharm
代码改善世界8 小时前
【C++初阶】手撕C++ string类
java·开发语言·c++
追雨潮8 小时前
内存向量检索引擎设计与实现:C# 轻量级 Milvus 替代方案
开发语言·c#·milvus
东离与糖宝8 小时前
Java AI工程化:PyTorch On Java+SpringBoot微服务部署(2025-2026最新实战)
java·人工智能
隐形喷火龙8 小时前
CentOS7 基于 FRP 实现 Java Web 服务内网穿透实操记录
java·开发语言
萝卜白菜。8 小时前
TongWeb8.0支持JBoss Weld‌
java·java-ee
万邦科技Lafite8 小时前
淘宝关键词API接口获取分类商品信息指南
java·前端·数据库·开放api·淘宝开放平台
xxjj998a8 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring