美文网首页
背景(二) NIO

背景(二) NIO

作者: iMasking | 来源:发表于2018-09-06 23:08 被阅读9次

Java NIO 由以下几个核心部分组成:

  • Channels
  • Buffers
  • Selectors

1. 缓冲区 Buffer

Buffer是一个对象,它包含需要写入或者读出的数据。在NIO中加入Buffer是其与传统IO一个重要区别。在NIO库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的; 在写入数据时,写入到缓冲区中。任何时候访问NIO中的数据, 都是通过缓冲区进行操作。

Buffer继承关系图

2. 通道 Channel

Channel是一个通道(全双工),可以通过它读取和写入数据。通道与流(单工)的不同之处在于通道是双向的,流只是在一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而且通道可以用于读、写或者同时用于读写。

Channel继承关系图

3. 多路复用器 Selector

多路复用器提供选择已经就绪的任务的能力。Selector 会不断地轮询注册在其_上的Channel, 如果某个Channel. 上面有 新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector 轮询出来, 然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O 操作。

Java NIO 使用方式

image.png

NIO服务端序列图:

NIO服务端序列图

NIO客户端序列图:

NIO客户端序列图

相关文章

  • 背景(二) NIO

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 1. 缓冲区 B...

  • NIO(二、Buffer)

    目录 NIO(一、概述)NIO(二、Buffer)NIO(三、Channel)NIO(四、Selector) Bu...

  • NIO(四、Selector)

    目录 NIO(一、概述)NIO(二、Buffer)NIO(三、Channel)NIO(四、Selector) Se...

  • NIO(三、Channel)

    目录 NIO(一、概述)NIO(二、Buffer)NIO(三、Channel)NIO(四、Selector) Ch...

  • 一.NIO背景知识

    一.虚拟内存 MMU:它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为...

  • Java NIO 教程(十四) Java NIO Path

    原文地址 目录 Java NIO教程 Java NIO 教程(一) 概述 Java NIO 教程(二) Chann...

  • Java NIO 教程(十五) Java NIO Files

    原文地址 目录 Java NIO教程 Java NIO 教程(一) 概述 Java NIO 教程(二) Chann...

  • Java NIO 教程(十六) Java NIO Asynchr

    原文地址 目录 Java NIO教程 Java NIO 教程(一) 概述 Java NIO 教程(二) Chann...

  • (三) Netty

    背景 通过选择合适的 NIO 框架,加上高性能的压缩二进制编解码技术,精心的设计 Reactor 线程模型,达到支...

  • java之NIO处理UDP收发

    本文大纲如下: 1、写作背景 2、基本的UDP包收发用法 3、采用NIO方式处理UDP 一、背景 本篇内容,主要来...

网友评论

      本文标题:背景(二) NIO

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