二.NIO简介

作者: 蜗牛1991 | 来源:发表于2017-09-26 18:33 被阅读0次

    一.概述

    • NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。
    • 所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
    image.png
    • Buffer(缓冲区)分为直接缓冲区与非直接缓冲区(后面会细讲)。Buffer 是一个对象, 它包含一些要写入或者刚读出的数据。任何时候访问 NIO 中的数据,您都是将它放到缓冲区中,而缓冲区实质上是一个数组,这与传统IO直接读到 Stream 对象中最大不同。
    • Selector允许单线程处理多个 Channel。因为它监控所有的 IO 事件,并负责分发。 事件到的时候触发,而不是同步的去监视事件。因此Selector的存在,我们说NIO是非阻塞。而传统IO流read()等方法会阻塞一个线程直至读写完成。(注意NIO文件读写没有非阻塞模式)


      image.png
    • 其它组件:如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。
    • Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似

    二.精简层次图

    • Buffer覆盖了你能通过IO发送的基本数据类型:byte,short,int,long,float,double 和 char
    • Channel涵盖了UDP 和 TCP 网络IO,以及文件IO
    • file包未包括在内


      image.png

    相关文章

      网友评论

        本文标题:二.NIO简介

        本文链接:https://www.haomeiwen.com/subject/icddextx.html