第5章 NIO

本章将对“New I/O”工具包的主要应用进行介绍。NIO主要包括两个部分:java.nio.channels包介绍Selector和Channel抽象,java.nio包介绍Buffer抽象。这都是一些高级的特性,有许多微妙的使用细节,因此,本章的组织结构也与前面的章节略有不同。第5.1节通过介绍它们所要解决的具体问题来引出NIO特性—尤其是当没有这些特性时,构建高性能服务器所面临的挑战。(如果你并不关心“为什么?”这类问题,可以直接跳过这节。)在第5.2节,我们将像前面一样展示一个(TCP)“回显”协议客户端,以介绍SocketChannel和Buffer类的使用方法,以及Channel非阻塞特性(nonblocking),这与第4.2节中介绍的阻塞特性有所不同。第5.3节中展示了一个使用了Selector、Channel和Buffer抽象服务器。然后我们回到主要抽象数据类型的使用细节上,各自用一小节进行介绍。最后,在第5.7节介绍了DatagramChannel类(DatagramSocket类的信道化版本)。