美文网首页
JAVA NIO 翻译系列(一、预览)

JAVA NIO 翻译系列(一、预览)

作者: shadowCc | 来源:发表于2017-08-09 17:53 被阅读62次

    原地址:http://tutorials.jenkov.com/java-nio/overview.html

    主要是翻译这个帅老外的nio系列,中间加了一点自己的理解,尽量读起来好懂一些,不对之处请指正

    java nio由三个核心的组件构成:

        Channels、Buffers、Selector

    在nio中所有的io操作都起始于Channel,Channel有点像stream这个概念。可以从Channel读取数据到Buffer,也可以从Buffer中读取数据到Channel中。下面是Channel和Buffer的关系图解:

    Java NIO: Channels read data into Buffers, and Buffers write data into Channels

    Buffer和Channel

    各自有一些实现的类,下面是Channel的几个主要的实现类:

             FileChannel、DatagramChannel、SocketChanel、ServerSocketChanel

    这些channels覆盖了UDP和TCP协议的网络IO和文件IO。

    Buffer也有一些主要的实现类:

             ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer

    从名字中可以看出来都是一些基本类型的buffer,还有一个MappedByteBuffer,后面会涉及。


    Selectors

    一个selector允许一个线程处理多个channel。下面是一个selector的图解,展示了一个selector同时处理三个channel

    Java NIO: A Thread uses a Selector to handle 3 Channel's

    要想使用selector,必须把channel注册到selector上面,然后调用它的select()方法.这个方法是阻塞的,一直等到其中的一个已注册到上面的channel准备好一个event。一旦这个方法返回了,这个线程就可以处理这些event。这些event包括连接、数据传输等等。

    相关文章

      网友评论

          本文标题:JAVA NIO 翻译系列(一、预览)

          本文链接:https://www.haomeiwen.com/subject/otdfrxtx.html