Java NIO Overview(2)

Java NIO consist of the following core components:
Java NIO由下面三个核心部分组成:
通道 Channels
缓冲 Buffers
多路复用器 Selectors

NIO当然还有更多的类和组件,但在我看来上面三个概念是NIO API的核心了,其余的,比如Pipe、FileLock只是用这三个核心组件联用的工具类而已。因此,在本篇概览中,我主要还是聚在这三个组件上。其余的会在教程中别的地方介绍到。

Channels and Buffers

总体上,NIO中所有IO都是从channel开始的。channel有点像Stream(流)。程序可将数据从channel读进buffer;同样,程序也能将数据从buffer读进channel。这里有个说明的插图:
这里写图片描述

Java NIO: Channels and Buffers

JavaNIO:Channels读数据到Buffers,Buffers读数据到Channels。Channels、Buffers有好几种类型。下面是主要的实现:

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

As you can see, these channels cover UDP + TCP network IO, and file IO.
可见:Channels包括了UDP+TCP网络NIO,以及FileIO(文件IO)
除了这些类,还有一些有意思的接口,容后再说。
下面是NIO中实现Buffer接口的一些类:

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

这些Buffers 涵盖了你可以通过IO发送的基本的数据类型:byte, short, int, long, float, double and characters.(除了布尔)。

NIO还有能够映射到内存中文件的了MappedByteBuffer ,以后也会介绍。

Selectors

一个selector能单线程处理多Channel。如果你的应用保持了很多连接,但每个连接吞吐低,Selector这个特性倒是挺有用的,这里有插图解释了一个Selector处理3个Channel:
一个Selector处理3个Channel
要使用一个selector,首先要在Channel上注册它,然后调用Select()方法。Select()会一直阻塞到注册的Channel当中至少一个有事件通知。一旦方法返回,线程就可以处理剩下的“事件”了。典型场景如读数据等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值