最近,温习了学习《Java SE tutorial》、《Think in Java》、《Java2 核心技术》和google到的资料,都说道NIO的文件操作有很大幅度的性能提高。但是,但是根据书本例子和我自己写的程序,做同样的操作(比如按每行读100M的有中文和英文的文件)并没有提高,而且多处书本知识与自己写的测试小例子矛盾,Why???NIO的性能到底提高在哪些方面,又是怎么实现的呢?
一个个疑问,不禁问自己:“难道,我在IO上的知识结构有问题?”
还是问google吧……
终于发现《Java 非阻塞通信研究》,看完这篇论文我有种“柳暗花明”的感觉。书上的知识没有问题,只是他们把我带入了一个误区,认为NIO是“超人”、是“万能的”。而且书上只是NIO的入门知识,对于整个NIO的体系结构和应用也不多。哎~~~自己弄得自己误入歧途。
《Java 非阻塞通信研究》的引言内容:全文我放附件里了
①~⑧ 是我添加上去的标注。
再次惭愧~~半吊子水
---------------------------------------------------------------------------------------------------------------------------
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写得要详细多了。)