码迷,mamicode.com
首页 > 编程语言 > 详细

Java NIO与IO的详细区别(通俗篇)

时间:2014-09-02 19:23:55      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   使用   java   strong   数据   div   

Java NIO与IO的详细区别(通俗篇)——转载

 

就速度来说 CPU > 内存 > 硬盘

  • I- 就是从硬盘到内存
  • O- 就是从内存到硬盘bubuko.com,布布扣

第一种方式:我从硬盘读取数据,然后程序一直等,bubuko.com,布布扣数据读完后,继续操作。这种方式是最简单的,叫阻塞IO

第二种方式:我从硬盘读取数据,然后程序继续向下执行,等数据读取完后,通知当前程序(对硬件来说叫中断,对程序来说叫回调),

                  然后此程序可以立即处理数据,也可以执行完当前操作在读取数据。

 

当程序从硬盘往内存读取数据的时候,操作系统使用了 2 个“小伎俩”来提高性能,那就是预读,如果我读取了第一扇区的第三磁道的内容,

那么你很有可能也会使用第二磁道和第四磁道的内容,所以操作系统会把附近磁道的内容提前读取出来,放在内存中,bubuko.com,布布扣缓存

 

(PS:以上过程简化了)

 

通过上面可以看到,操作系统是按块 Block从硬盘拿数据,就如同一个大脸盆,一下子就放入了一盆水。

但是,当 Java 使用的时候,旧的 IO 确实基于 流 Stream的,也就是虽然操作系统给我了一脸盆水,但是我得用吸管慢慢喝。

Java NIO与IO的详细区别(通俗篇)

标签:style   blog   http   io   使用   java   strong   数据   div   

原文地址:http://www.cnblogs.com/muzhongjiang/p/3951954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!