`
san_yun
  • 浏览: 2595042 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java nio 学习

    博客分类:
  • NIO
 
阅读更多

看完以后,发现这篇文章虽然写的时间较早,但是我这几天看到的给我启发最大的一篇资料。

我下载文章下面附带的源代码,看了几遍,我的思路忽然开朗起来。

重新改写之前几天写的代码,经过这一天的努力,写出的代码经过测试,不管是并发性、处理能力方面都有明显的提升。

与 以前用传统的io + socket + 多线程写的HTTP服务器对比,用ab测试并发性,nio 处理 2000 并发一点儿问题都没有,反应的速度也相当的快,而传统的io处理方式在处理1000个并发的过程中,客户端ab就崩溃了,NIO与传统的IO测试对比结 果:

传统的IO + socket需要几百、上千个线程来处理客户端的请求,而 NIO 只需要几个线程就搞定;

NIO内存占用相比传统的IO降低 80%;

NIO的cpu占用相比传统的IO 降低 20%;

NIO处理能力相比传统的IO 却提升了 30%;

 

我今天使用NIO写的代码结构相当简单:

1个 Selector 主线程 + 1个 Reader 线程 + 1个 Writer 线程

就能处理几百、上千的并发请求,处理的速度相当的快,内存占用相当的低。

看到测试的结果,我也深刻体会到了nio的一个优点:该read的时候再read,该write时候再write。

不像传统的io,用多个线程处理多个用户的多个连接请求,不管用户提交的数据是否到达,先 read(),没有数据可读的时候,就在那阻塞着。

 

不过话又说回来,传统的io,基于流(Stream),也有它的优点,比如处理流程简单,代码写起来相比nio要简单许多。

 

在这里我还想说一点体会,就是我在网上这几天找相关资料,发现80%的文章介绍的都不够深入,提供的代码基本上都是单线程的,非常适合用来处理短连接,这也一直给我一种错觉,难道NIO不适合处理长连接?

今天找到的这篇:http://www.ibm.com/developerworks/cn/java/l-niosvr/

查看了文章里提供的源代码,使用了三个线程(Selection线程,Reader线程,Write线程),使nio处理长连接成为可能,只需简单修改一下,就OK了。

分享到:
评论

相关推荐

    JAVA NIO 学习资料

    JAVA NIO学习资料JAVA NIO学习资料

    Java NIO学习资料+代码.zip

    Java NIO学习资料+代码.zip

    javaNIO学习笔记(csdn)————程序.pdf

    javaNIO学习笔记(csdn)————程序

    java_nio学习文档

    java_nio学习文档

    JAVA NIO学习网站

    NULL 博文链接:https://zhqyhp.iteye.com/blog/2057286

    javaNIO学习笔记

    java NIO的基本知识点学习笔记,不包含具体代码

    java NIO 学习 聊天室程序 (3)

    NULL 博文链接:https://tmdpzc.iteye.com/blog/1737928

    Java NIO学习笔记——ByteBuffer用法

    NULL 博文链接:https://zheng12tian.iteye.com/blog/1094811

    java NIO学习系列 笔记

    Contents: 1 核心概念以及基本读写 2 缓冲区的实现机制 3 连网与异步IO 4 分散和聚集IO 5 文件锁定

    java nio 入门

    java nio 入门,来自于IBM中文站

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    javaNIO.xmind

    自己总结的java中NIO的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    JAVA Nio 学习探究

    包含NIO核心概念、基本文件读写、缓冲区内部实现机制、异步IO、缓冲区更多特性探究、文件锁与字符集

    java nio入门学习,两个pdf

    java nio入门学习,两个pdfjava nio入门学习,两个pdf

    JAVA NIO学习笔记.docx

    IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的... (c 的 printf scanf,java 的面向对象封装 )

    java nio中文版

    java NIO是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下: – 为所有的原始类型提供 (Buffer) 缓存支持。 – 字符集编码解码解决方案。 – Channel :一个新的原始 I/O 抽象。 – 支持...

    Ioserver java Nio socket 框架

    Ioserver java Nio socket 框架 是个不错的NIO 通讯框架,本来想学习mina框架,看了看mina的源码太头痛,本人觉得看懂了Ioserver 再看mina的框架,想多的学习 java NIO 的也可以下载 看看,很值得学习啊!!!

    java nio示例代码

    该资源为Java nio入门的部分简单示例代码,目的是用简单的示例程序,说明nio中的知识点,希望对你的学习有所帮助

    Java语言基础教程-Java NIO流篇.txt

    Java语言基础教程-Java NIO流篇.txt 网盘永久链接 为方便java nio学习爱好者而上传

    Java NIO pdf

    Java NIO中文版高清可选文字pdf,学习nio不可错过的好书

Global site tag (gtag.js) - Google Analytics