NIO简介

来源:互联网 发布:网上订餐系统源码下载 编辑:程序博客网 时间:2024/05/21 09:23

  NIO是在JDK 1.4中引入的,其目的是为了提高速度。java NIO包含了三个中重要的核心组件:Channels,Buffers,Selectors。

Channels和Buffers
 
  通常来说,在NIO中所有的IO都是以Channels开始的。
  Channels和Streams有些类似。区别如下:
  1.Channels是双向的,可读可写,Streams是单向的,一个流要么是读入流,要么是写入流。
  2.Channels可以异步读写。
  3.数据从Channels读到Buffers,从Buffers写到Channels
  
  一些主要的Channel:
  FileCannel:从文件中读取和写入数据
  DatagramChannel:在网络中通过UDP读写数据
  SocketChannel:在网络中通过TCP读写数据
  ServerSocketChannel:监听到来的TCP连接,比如网络服务连接。
  
  一些主要的Buffer:        
   ByteBuffer
   CharBuffer
   FloatBuffer
   DoubleBuffer
   IntBuffer
   ShortBuffer
   LongBuffer
   MappedByteBuffer
   可以看到对于基本数据类型都有相应的Buffer,最后一个MappedByteBuffer用在内存映射文件上。
  
Selectors

  Selector允许一个线程管理多个Channel,在多Channel的情况下非常方便,比如聊天服务。示意图如下(搬运工):

        这里写图片描述
        
  要使用Selector需要在Channel上注册,然后调用select()方法,此方法会阻塞直到注册Channel有返回的事件。比如网络连接,
数据接收等。

  具体关于这些组件的细节,后面会介绍。

0 0