背景
这个系列的文章都是翻译自jenkov.com/tutorials/j… 版权属于创作者。哪里翻译的不对欢迎交流。 Java NIO 是Java里可选择的IO API,意味着可以替代标准Java IO和Java 网络API。Java NIO提供了一个不同的IO编程模型相对于传统的IO API。注意:有些时候NIO被叫成Non-blocking IO.然而这不是NIO原生的意义。同时,NIO API的一部分实际上是阻塞的-举个例子比如文件API。所以标签"Non-blocking"略微有些误导。
Java NIO: Non-blocking IO
Java NIO允许你做一些non-blocking IO。对于实际上来说,一个线程可以获取一个通道去读取数据到buffer里。当channle读取数据到buffer里时,线程可以做其他的。一旦读取数据到buffer,线程可以接着处理它。写数据到channel也是一样。
Java NIO: Channels 和 Buffers
在标准IO API里你使用字节流和字符流。在NIO里你使用channel 和buffers。数据通常从channel读取到buffer,或者从buffer写到channel.
Java NIO: Selectors
Java NIO 包含了 "selector"的观念。一个selector是一个对象可以监视多个channel的事件(就像: 打开链接,接收到数据等等)。因此,一个线程可以监听多个channle的数据。
Java NIO Concepts
对于旧的Java IO 模型这里有几种新的概念在学习Java NIO时。这几种概念已经在下面:
· Channels
· Buffers
· Scatter - Gather
· Channel to Channel Transfers
· Selectors
· FileChannle
· SocketChannel
· ServerSocketChannel
· Non-blocking Server Design
· DatagramChannel
· Pipe
· NIO vs IO
· Path
· Files
· AsynchronousFileChannel