二.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简介

    一.概述 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。 所有的 ...

  • Netty之NIO

    ------NIO简介(1)-------- NIO组件 channel,buffer,selector,pip,...

  • Chapter 15 . Java NIO

    阅读原文 Chapter 15 . Java NIO 15.1 Java NIO 简介 Java NIO(New...

  • Java NIO 记录(一)

    一、NIO简介 Java NIO (New IO , Non Blocking IO)。NIO是一个基于通道,...

  • NIO简介

    NIO不同于传统的IO,它是在jdk1.4之后引入的,它有如下特性 基于buffer和channel实现面向缓存区...

  • NIO简介

    BIO与NIO的区别 NIO 和 BIO 的区别主要体现在三个方面: NIOBIO基于缓冲区( Buffer )基...

  • Socket 编程之 NIO

    本文介绍基于 NIO 实现 Socket 编程的方法及问题。 目录 NIO 简介 NIO Socket 代码示例 ...

  • java NIO---Buffer

    NIO中Buffer简介 java的NIO中buffer至关重要,buffer是读写的中介,主要和NIO的chan...

  • NIO编程---Java NIO 简介

    **版权声明:本文为小斑马伟原创文章,转载请注明出处!Java NIO(New IO)是从Java 1.4版本开始...

  • Java-nio

    nio原理学习 nio简介 nio 是New IO 的简称,在jdk1.4 里提供的新api 。Sun 官方标榜的...

网友评论

    本文标题:二.NIO简介

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