Java NIO简介
Java NIO: Channels and Buffers(通道和缓冲区)
标准的IO是基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
常用的Channels和Buffers:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
- ByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。
Selector允许单线程处理多个 Channel。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。
http://blog.jobbole.com/88984/这篇是“一个故事讲清NIO,故事大致就是在“每一个步骤”都尽量减少一对一等待的冗余时间,设置专职人员只做某一方面工作。
下面是大致流程图: