一. NIO 核心组成:
- Channels
- 定义:Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中,nio从channel开始
- 实现:
- FileChannel
- SocketChannel
- ServerSocketChannel
- DatagramChannel
- Buffers
- 作用:和通道数据交互,即从通道中读入数据到缓冲区,和从缓冲区中把数据写入到通道中,通过这样完成对数据的传输。
- 实现:
- ByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
- Selectors
- 作用:控制单线程处理多个 Channel
- 用法概述:使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。
二. Channel 和 Buffer图示:
三. Selector控制多个Channel图示: