• Java NIO (一) 初识NIO


      Java NIO(New IO / Non-Blocking IO)是从JDK 1.4版本开始引入的IO API , 可以替代标准的Java IO API 。NIO与原来标准IO有同样的作用和目的,但是使用方式和读写方式完全不同,NIO支持面向缓冲区,基于通道的IO操作。NIO以更高效的方式进行文件的读写操作。

      NIO的核心组成部分:

        ·  Buffers

        ·  Channels

        ·  Selectors

      

      Channel 和 Buffer

       在NIO中数据源以及数据的目的位置都是直接和通道(Channel)接触的。Buffer作为数据的载体,从不同的管道中读取数据或者将数据写入通道。

                                 

      NIO中的Buffer是和Java中的基本数据类型相对应的,每种基本数据类型都有对应的Buffer实现,除了Boolean类型:

          ByteBuffer

          CharBuffer

          DoubleBuffer  

          FloatBuffer

          IntBuffer

          LongBuffer

          ShortBuffer

          MappedByteBuffer :用于表示内存映射文件,后续详述。

      Channel 主要有以下几个,主要包括操作文件的,操作网络的:

          FileChannel

          DatagramChannel

          SocketChannel

          ServerSocketChannel

      Selector

      Selector允许单线程处理多个 Channel。比如某个应用中打开了多个链接,但是多个连接中流量都很低,用Selector可以是用少于连接数的线程来处理多个管道的连接请求任务,可以节约服务器资源,同时提高服务效率。

      如下:这是在一个单线程中使用一个Selector处理3个Channel的图示:

                                                     

        

        

       要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。

         

  • 相关阅读:
    border-radius属性失效了Ծ‸Ծ
    Python默认版本切换
    Mac系统下安装PyCharm
    Python查看与安装
    MySql查询最近一个月,一周,一天
    Mysql计算并保留两位小数
    Mysql 用户ip访问根据省份查询
    Echarts 中国地图(包括china.js文件)
    JQuery进度条
    Java 求两个数百分比%
  • 原文地址:https://www.cnblogs.com/qq-361807535/p/6516953.html
Copyright © 2020-2023  润新知