JAVA NIO

Posted sharing-java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA NIO相关的知识,希望对你有一定的参考价值。

    

1 NIO概述

  1.1NIO(new IO)是一个可以替代java IO API的API,NIO提供了与标准IO不同的工作方式,标准IO是基于字节流和字符流进行操作的,而NIO是基于channel和Buffer进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写到通道中,方式如例图示,JAVA NIO的几个核心组成部分是channels,Buffers,Selectors。

                                                                                                                                技术图片

 

   1.2NIO中的channel有好几种类型包括:FileChannel,DatagramChannel,SocketChannel,ServerSocketChannel这些channel涵盖了UDP,TCP,以及文件IO;Buffer包括ByteBuffer,CharBuffer,DoubleBuffer,FloatBuffer,IntBuffer,LongBuffer,ShortBuffer,这些buffer,覆盖了所有的基本数据类型,还有一种映射MappedByteBuffer,在此我们不做细说;Selector,selector允许单线程处理多个Channel,如下图样例,要使用Selector,得先向Selector注册channel,然后调用selector()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。

                                                                                                                                     技术图片

  1.3和传统IO相比, NIO是非阻塞 IO

 

以上是关于JAVA NIO的主要内容,如果未能解决你的问题,请参考以下文章

JAVA NIO 文件部分

Java-杂项-java.nio:java.nio

浅谈Netty相关概念

Java I/O 扩展

什么是NIO2

Java/计算机网络/操作系统面试题总结(未完待续)