zoukankan      html  css  js  c++  java
  • Java NIO

    1.简述

    java nio是java SE 1.4引进的非阻塞IO,提供了一系列的新的API,不同于之前的阻塞IO。在缓冲管理、可伸缩的网络和文件IO、字符集支撑方面得到了显著提高。
    主要位于java.nio包中,nio模块主要由以下几个部分组成:

    • Buffer(缓冲区)
    • Channel(通道)
    • Selector(选择器)
    • Charset(字符集)

    下面就从这个几个核心来简单说说java的nio,但这里不对四大核心做过多详细的说明和操作,这部分会在后续的文章中逐一详述。

    2.Buffer

    Buffer本质上是一块连续的内存空间,用来作为数据容器。与传统的阻塞IO不同,在阻塞IO中数据都是面向流的读写,但是在nio中都是基于Buffer进行数据的读写操作,即从Buffer中读数据和将数据写进Buffer,如下图:

    3.Channel

    Channel代表着连接的实体可进行IO操作。通道的本质就是一种实体,可连接到IO操作。有点类似传统IO中的Stream,在nio中具有多种类型,后续文章中会详细说明。
    Channel与Stream不同,它是双向的,即可以进行读写,而Stream是单向的,要么读要么写。
    Channel的读写都是非阻塞的,但是Stream中的读写是阻塞。

    4.Selecttor

    Selector代表着多路选择器,是多路复用应用的关键所在。上述的可选择性通道(Selectable Channel)都可以注册到Selector上,然后由Selector监听各个Channel中的就绪事件,进行相应处理。

    以上是nio中各个核心模块的简单说明和示意图,关于其详细的特性和api后续中会有一系列文章进行解释。

    参考

    Linux IO模式及 select、poll、epoll详解

  • 相关阅读:
    【转】jenkins更新主题
    【原】jenkins常用的plugin
    作业:简单的主机批量管理工具
    信号量, 事件,队列
    paramiko模块介绍
    多线程介绍
    作业:开发支持多用户在线FTP程序
    判断操作系统的三种方法
    socketserver
    新博客地址
  • 原文地址:https://www.cnblogs.com/lxyit/p/9113022.html
Copyright © 2011-2022 走看看