JavaSE---NIO
1、概述
1.1 BIO的问题:
读取输入流中的数据时,如果没有读到有效数据,该线程将被阻塞;
传统输入、输出流都是阻塞式的;
传统的输入、输出流都是通过字节移动处理;
面向流的输入、输出一次只能处理一个字节;
1.2 JDK1.4开始,java提供了NIO;
NIO与BIO有相同的目的:用于进行输入、输出功能;
NIO使用了不同的方式处理输入、输出
(NIO采用内存映射文件的方式来处理输入、输出;
NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,这种方式模拟了OS上的虚拟内存的概念;
);
Channel、Buffer是NIO的2个核心对象:
Channel
对BIO的模拟(类似于InputStream、OutPutStream);
NIO中所有数据都需要通过Channel传输;
Channel与BIO的InputStream、OutPutStream不同在于:提供一个map方法,可以直接将“一块数据”映射到内存中;
BIO是面向流、NIO是面向块;
Buffer
可以理解为一个容器,本质是一个数组(类似于BIO的缓冲区);
发送到Channel的所有对象必须先放到Buffer中;
从Channel中读取的数据也必须先读取到Buffer中;
最新文章
- 几个有趣的WEB设备API(二)
- PreparedStatement
- 在Android上用AChartEngine轻松绘制图表
- [转]HDFS客户端的权限错误:Permission denied
- 如何调试R程序(转载)
- 使用Join代替In
- Codeforces Round #326 (Div. 2)-Duff and Meat
- 靠边伸缩菜单的做法(类似QQ,碰到就会伸出来)
- 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
- 非常详细的 Docker 学习笔记
- 问题分享:ActiveX component can't create object: ";MSComDlg.CommonDialog";
- 使用spring的jdbcTemplate-----用JDBC模板查询数据库
- SystemConfig.getPropertyValue(";test";);配置文件已经加了test=abc,但是取得时候空字符串
- A Free , Fast and Small Automatic Formatter for C , C++ , C# , Java Source Codes
- JQuery学习笔记——基础选择器
- cocos2dx 3.2之Lua打飞机项目
- MVN TEST指定运行脚本
- IIS 7.0的集成模式和经典模式
- LINQ to SQL 实现 GROUP BY、聚合、ORDER BY
- sofa graphql 2 rest api框架