IO & NIO
-
IO面向流,阻塞IO
-
NIO面向缓冲,非阻塞IO,选择器
可简单认为:IO是面向流的处理,NIO是面向块(缓冲区)的处理
NIO主要有三个核心部分组成:
-
buffer缓冲区(本质是数组)
-
Channel管道
-
-
Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
-
buffer缓冲区和Channel管道
在NIO中并不是以流的方式来处理数据的,而是以buffer缓冲区和Channel管道配合使用来处理数据。
NIO就是通过Channel管道运输着存储数据的Buffer缓冲区的来实现数据的处理!
Channel不与数据打交道,它只负责运输数据。与数据打交道的是Buffer缓冲区
Channel-->运输,Buffer-->数据
相对于传统IO而言,流是单向的。对于NIO而言,有了Channel管道这个概念,我们的读写都是双向的
NIO优势
-
速度快,使用mmap虚拟内存映射对文件内容进行修改
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具