最近,温习了学习《Java SE tutorial》、《Think in Java》、《Java2 核心技术》和google到的资料,都说道NIO的文件操作有很大幅度的性能提高。但是,但是根据书本例子和我自己写的程序,做同样的操作(比如按每行读100M的有中文和英文的文件)并没有提高,而且多处书本知识与自己写的测试小例子矛盾,Why???NIO的性能到底提高在哪些方面,又是怎么实现的呢?
一个个疑问,不禁问自己:“难道,我在IO上的知识结构有问题?”
还是问google吧……
终于发现《Java 非阻塞通信研究》,看完这篇论文我有种“柳暗花明”的感觉。书上的知识没有问题,只是他们把我带入了一个误区,认为NIO是“超人”、是“万能的”。而且书上只是NIO的入门知识,对于整个NIO的体系结构和应用也不多。哎~~~自己弄得自己误入歧途。
《Java 非阻塞通信研究》的引言内容:全文我放附件里了
I/O系统对应用程序的性能有至关重要的影响。Java平台传统I/O系统的构建基于两个核心概
念:Byte(字节)和Stream(数据流)。这种模式下,I/O系统的操作与处理是以字节为单位,导
致速度很慢。由于①JSR 51的面世,从JSDK1.4版本开始,Java引入了一组全新的I/O应用程序接口
(APIs)——NIO(New I/O),涉及到java.lang、java.net、java.io三个包的85个类的重新改写
和新类加入。②NIO系统的操作模式针对字节数组,而不是字节,从而加快了处理速度。同时,③NIO
提供了升级的套接字通道和文件I/O操作,④提供了一个正则表达的包来支持模式匹配,⑤提供了对字
符集转换的编码器和解码器,和⑥优化过的文件系统支持如文件锁定、⑦内存映射等功能。在JSDK1.4
平台上,文件处理和网络服务器程序的性能都得到了明显的改善。但,⑧NIO并不是java.io包的再
实现或取代,它的出现只是为了突破Java传统I/O包存在的限制,弥补Java传统I/O包的不足,满
足新的应用需求。并且,它并不是一个适于任何情况的工具。本文针对NIO的特性做出分析与阐述,
对网络应用中阻塞通信与非阻塞通信、NIO的非阻塞工作机制以及网络通信中非阻塞套接字的实现
进行了研究和探讨,提出了系统地实现非阻塞通信的方法。
①~⑧ 是我添加上去的标注。
再次惭愧~~半吊子水
---------------------------------------------------------------------------------------------------------------------------
Java SE tutorial对NIO包的描述:These packages provide APIs for scalabe I/O,fast buffered byte and character I/O,and character set conversion。(描述得太少了!)
Think in java好像是这么说的:JDK1.4中java.nio.*包中映入了新的Java I/O类库,目的在于提高速度。速度的提高来自于锁使用的架构更接近于操作系统执行I/O的方式:通道和缓冲器。(看了这短话,不理解错才怪!!!一个比较老的版本,刚查了一下新版的Think in java写得要详细多了。)
分享到:
相关推荐
java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java...
java毕业设计——java银行帐目管理系统的设计与实现(源代码+论文).zip java毕业设计——java银行帐目管理系统的设计与实现(源代码+论文).zip java毕业设计——java银行帐目管理系统的设计与实现(源代码+论文).zip ...
java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计...
java毕业设计——java泡泡堂网络游戏的设计与实现(源代码+论文).zip java毕业设计——java泡泡堂网络游戏的设计与实现(源代码+论文).zip java毕业设计——java泡泡堂网络游戏的设计与实现(源代码+论文).zip java毕业...
java毕业设计——java公共资源模块的设计与开发(源代码+论文).zip java毕业设计——java公共资源模块的设计与开发(源代码+论文).zip java毕业设计——java公共资源模块的设计与开发(源代码+论文).zip java毕业设计...
java毕业设计——java班主任管理系统(源代码+论文).zip java毕业设计——java班主任管理系统(源代码+论文).zip java毕业设计——java班主任管理系统(源代码+论文).zip java毕业设计——java班主任管理系统(源代码+...
java毕业设计——java贪吃蛇游戏设计与开发(源代码+论文).zip java毕业设计——java贪吃蛇游戏设计与开发(源代码+论文).zip java毕业设计——java贪吃蛇游戏设计与开发(源代码+论文).zip java毕业设计——java贪吃蛇...
java毕业设计——java+mysql crm客户关系管理系统的设计与实现.zip java毕业设计——java+mysql crm客户关系管理系统的设计与实现.zip java毕业设计——java+mysql crm客户关系管理系统的设计与实现.zip java毕业...
java毕业设计——JAVA_JSP电子政务网(论文+源代码+数据库+讲解视频).zip java毕业设计——JAVA_JSP电子政务网(论文+源代码+数据库+讲解视频).zip java毕业设计——JAVA_JSP电子政务网(论文+源代码+数据库+讲解...
java毕业设计——java班级管理系统的设计与实现(论文+系统).zip java毕业设计——java班级管理系统的设计与实现(论文+系统).zip java毕业设计——java班级管理系统的设计与实现(论文+系统).zip java毕业设计——java...
java毕业设计——java物业管理系统设计与实现(论文+源代码).zip java毕业设计——java物业管理系统设计与实现(论文+源代码).zip java毕业设计——java物业管理系统设计与实现(论文+源代码).zip java毕业设计——java...
java毕业设计——JAVA_JSP企业合同管理系统(论文+源代码+数据库+讲解视频).zip java毕业设计——JAVA_JSP企业合同管理系统(论文+源代码+数据库+讲解视频).zip java毕业设计——JAVA_JSP企业合同管理系统(论文+...
java毕业设计——Java聊天室的设计与实现(论文+开题报告+答辩PPT+源代码+数据库+讲解视频).zip java毕业设计——Java聊天室的设计与实现(论文+开题报告+答辩PPT+源代码+数据库+讲解视频).zip java毕业设计——...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计...
java毕业设计——java打飞机游戏的设计与实现(源代码+论文).zip java毕业设计——java打飞机游戏的设计与实现(源代码+论文).zip java毕业设计——java打飞机游戏的设计与实现(源代码+论文).zip java毕业设计——java...
java毕业设计——java局域网监听软件的设计与开发(源代码+论文).zip java毕业设计——java局域网监听软件的设计与开发(源代码+论文).zip java毕业设计——java局域网监听软件的设计与开发(源代码+论文).zip java毕业...
java毕业设计——java扫雷游戏的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——java扫雷游戏的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——java扫雷游戏的设计与实现(论文+答辩PPT+...
java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计...
java毕业设计——java小区物业管理系统的设计与实现(源代码+论文).zip java毕业设计——java小区物业管理系统的设计与实现(源代码+论文).zip java毕业设计——java小区物业管理系统的设计与实现(源代码+论文).zip ...