njthnet

[导入]为什么使用Java NIO

Java中普通的I/O功能  一般体现在 1.文件读写、2.网络传输、3.字节流输入/输出  应用场景。而Java中的 NIO 提高了原有I/O的性能。 Java的NIO包含以下特性:   1.内存映射到文件   2.文件锁定   3.字符集编码和锁码   4.非阻塞的输入/输出  Java的NIO目前运用最广泛的在Apache的Tomcat6中,1.减少了服务器在瞬间达到峰值的现象,2.减少了服务器线程不必要的开销。 ps: 1.Tomcat5.X的版本中还不支持NIO。2.Tomcat 6中默认的配置并不支持NIO,需要进行配置,详见我写的另外一篇文章“给正在使用Tomcat6的朋友说几句废话(优化)” ,原文地址: http://www.javabloger.com/article/performance_tomcat_about_nio.html 从下面2图中就可以看出Java中普通的I/O和Java中NIO的区别 Java传统I/O在socket编程中的应用场景,如图所示: 一个socket连接对应一个输入/输出通道,一个输入/输出通道在对应一个线程,这样有多个请求,就需要开辟多个线程,这样对CPU的负担大大的提高。关系是一对一的。 Java NIO 在socket编程中的应用场景,如图所示: 在上图中我们能看到中间有类叫做Selector 1.当socket服务端启动后对每个socketchannel进行建立关系。 2.这时只需要把探知的socketchannel告诉Selector。 3.当有事件发生时,会通知传回一组SelectionKey,读取这些Key,就会获得我们刚刚注册过的socketchannel。 4.原先已经建立好的Channel中读取数据。 5.最后可以接收到的这些数据进行处理。 所以我们能看出不必像原先那样开大量的线程,然后让线程傻傻的等待。而NIO不必,通道已经由一个线程建立好了,有事就说话,说了就去做,而且在一个线程中建立了多个通道,可以同时做很多事情,不会像原先那样开辟多个线程,耗费CPU资源,关系是1对多的。 –end–
文章来源:http://www.javabloger.com/article/why-use-java-nio.html?source=rss

posted on 2010-03-07 00:08 njthnet 阅读(263) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

留言簿

文章档案

新闻档案

搜索

最新评论