Java NIO Tutorial

 
 

Jakob Jenkov
Last update: 2014-06-25

Java NIO (New IO) is an alternative IO API for Java (from Java 1.4), meaning alternative to the standardJava IO and Java Networking API's. Java NIO offers a different way of working with IO than the standard IO API's.

NIO是一个可供替代的 io API, 可以用来代替原来的IO 和网络 API。

Java NIO: Channels and Buffers

In the standard IO API you work with byte streams and character streams. In NIO you work with channels and buffers. Data is always read from a channel into a buffer, or written from a buffer to a channel.

标准IO api 是用 字节流和 字符流工作;NIO是用 通道 Channel和缓冲 buffer 工作,数据是从Channel读到buffer,从buffer写到Channel

Java NIO: Non-blocking IO

nio是非阻塞io,thread让Channel读数据到buffer,然后线程可以做其他事,读完了可以继续处理他。

Java NIO enables you to do non-blocking IO. For instance, a thread can ask a channel to read data into a buffer. While the channel reads data into the buffer, the thread can do something else. Once data is read into the buffer, the thread can then continue processing it. The same is true for writing data to channels.

Java NIO: Selectors

一个selector可以模拟操作多个Channel的处理数据。

Java NIO contains the concept of "selectors". A selector is an object that can monitor multiple channels for events (like: connection opened, data arrived etc.). Thus, a single thread can monitor multiple channels for data.

How all this works is explained in more detail in the next text in this series - the Java NIO overview.