Java NIO (New IO) API 是一种替代 标准Java IO API 和 Java Networking API 的 API。
Java NIO 提供了一种不同于标准 IO 工作方式的实现。
Java NIO: Channels and Buffers
在标准IO API中,我们使用字节流(byte streams
)和字符串流(string streams
)。
在NIO中,我们使用Channels
和Buffers
。
数据(Data) 总是从Channel
读取到Buffer
中,或者从Buffer
写到Channel
。
Java NIO: Non-blocking IO
Java NIO 是非阻塞的。举个例子:一个线程请求一个Channel
把数据读取到Buffer
里,当
Channel
在读数据到Buffer
过程中,这个线程可以去处理其他事情。当数据已经读取到Buffer
后,线程可以开始处理这组数据。
反过来也是如此。
Java NIO: Selectors
Java NIO 包含一个叫做 Selectors
的概念。Selector
是一个对象,它可以监控多个Channel
的事件(比如: 建立了连接、接收到数据等等)。因此,一个线程就可以监控多个Channel
的数据。