NIO-简介

         最近在学习NIO,Java NIO(New IO)是从Java1.4版本开始引入的一个新的IO API,NIO与原来的IO有相同的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的,基于通道的IO操作。NIO将以更高效的方式进行文件的读写操作。

 

IO和NIO的区别:

       IO         

       NIO

面向流

面向缓冲区

阻塞IO    

非阻塞IO

选择器

 

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

      · Buffer

      · Channel

      · Selector

 

 

Buffer(缓冲区)

   一个用于特定基本数据类型的容器。主要用于与NIO通道进行交互,数据时从通道读入缓冲区,从缓冲去写入通道中去。

   根据数据类型不同,有以下Buffer常用子类:

      ByteBuffer

      CharBuffer

      ShortBuffer

      IntBuffer

      LongBuffer

      FloatBuffer

      DoubleBuffer

  

   缓冲区的基本属性:

      容量(capacity):表示Buffer最大数据容量,创建后不能更改

      限制(limit):第一个不应该读取或写入的数据的索引,位于limit后的数据不可读写

      位置(position):下一个要读取或写入的数据的索引

      标记(mark)或重置(reset):标记是一个索引,通过Buffer的mark()方法指定Buffer中一个特定的position,之后可以调用reset()方法恢复到这个position

 

Channel(通道)

   表示IO源于目标打开的连接。Channel本身不能直接访问数据,只能与Buffer进行交互。

   Java为Channel接口提供的实现类:

   1)FileChannel:

      用于读取、写入、映射和操作文件的通道

   2)DatagramChannel:

      通过UDP读写网络中的数据通道

   3)SocketChannel:

      通过TCP读写网络中的数据

   4)ServerSocketChannel:

      可以监听新进来的TCP连接,对每一个新进来的连接都会创建一个SocketChannel

 

Selector(选择器)

   可以使用一个单独的线程管理多个Channel。是非阻塞IO的核心。

   

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值