zoukankan      html  css  js  c++  java
  • Java NIO与IO

    内核空间用户空间计算机体系结构计算机组成原理、……确实有点儿深奥。

    我的新书《代码之谜》会有专门的章节讲解相关知识,现在写个简短的科普文:

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

    • I- 就是从硬盘到内存
    • O- 就是从内存到硬盘

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

    第二种方式:我从硬盘读取数据,然后程序继续向下执行,等数据读取完后,通知当前程序(对硬件来说叫中断,对程序来说叫回调),然后此程序可以立即处理数据,也可以执行完当前操作在读取数据。

    在以前的 Java IO 中,都是阻塞式 IO,NIO 引入了非阻塞式 IO。

    还有一种就是同步 IO 和异步 IO。经常说的一个术语就是“异步非阻塞”,好象异步和非阻塞是同一回事,这大概是一个误区吧。

    至于 Java NIO 的 Selector,在旧的 Java IO 系统中,是基于 Stream 的,即“流”,流式 IO。

    当程序从硬盘往内存读取数据的时候,操作系统使用了 2 个“小伎俩”来提高性能,那就是预读,如果我读取了第一扇区的第三磁道的内容,那么你很有可能也会使用第二磁道和第四磁道的内容,所以操作系统会把附近磁道的内容提前读取出来,放在内存中,缓存

  • 相关阅读:
    哈利波特买书事件
    闹钟类app构想
    梦断代码(7-尾)
    梦断代码(3-6)
    梦断代码(0-2)
    环形二维数组求最大子矩阵
    数组问题
    电梯考察
    四则运算的三张计划表
    团队开发用户需求调研
  • 原文地址:https://www.cnblogs.com/yxgyiwen/p/6601244.html
Copyright © 2011-2022 走看看