Java NIO与IO

编程技术  /  houtizong 发布于 3年前   78

Java NIO和IO的主要区别

下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。

IO                NIO面向流            面向缓冲阻塞IO            非阻塞IO无                选择器

 

  1. 面向流与面向缓冲
    IO是面向流的,使用者从流中将数据读取出来,缓存在其它地方后才能使用;而NIO面向缓冲区,数据的读写通过缓冲区来进行,可以在缓冲区中前后移动,增加了处理过程中的灵活性,当然也会导致更复杂的检查。
  2. 阻塞与非阻塞IO
    IO是阻塞的,一个线程中调用read()或者write()时不能做其他的事情;而NIO的非阻塞模式可以将空余时间用来做其他事情,一个线程中可以管理多个输入输出通道。
  3. 选择器
    NIO选择器允许在一个线程中件数多个输入通道,使得多输入情况下的处理非常简单。

由于非阻塞和选择器的使用,NIO在处理大量连接时更加高效和便利,但是由于缓冲数据读写的不确定性,对单份数据的解析则较为麻烦;因此如果需要管理同时打开的大量连接,这些连接每次发送的数据不多(聊天服务器,P2P网络等),使用NIO更有优势;而连接较少却发送较多数据或者数据需要逐步解析时,使用IO则更为方便。

转载:http://ifeve.com/java-nio-vs-io/

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客