Java面试题更新 2026-08-03

请解释 Java NIO 中的 Channel 是什么,并说明它与传统 IO 的主要区别。

考察说明

考查对 Java NIO 核心抽象 Channel 的理解及其与传统 IO 的对比。

回答思路

  1. 【回答框架 1】Channel 是 Java NIO 中用于 I/O 操作的通道,它类似于传统 IO 中的流,但支持双向读写,且可以非阻塞。
  2. 【回答框架 2】Channel 的主要实现包括 FileChannel、SocketChannel 和 ServerSocketChannel,分别用于文件、TCP 客户端和服务端通信。
  3. 【回答框架 3】与传统 IO 的流不同,Channel 可以与 Buffer 配合使用,数据从 Channel 读入 Buffer,或从 Buffer 写入 Channel,这提高了灵活性和性能。
  4. 【回答框架 4】Channel 支持阻塞和非阻塞模式,非阻塞模式下可以配合 Selector 实现多路复用,提高系统吞吐量。
  5. 【关键点 1】Channel 是双向的,可读可写。
  6. 【关键点 2】Channel 必须与 Buffer 交互。
  7. 【关键点 3】Channel 支持非阻塞模式,可与 Selector 配合实现多路复用。
  8. 【易错点 1】不要混淆 Channel 与流,Channel 是双向的,流是单向的。
  9. 【易错点 2】FileChannel 不能切换到非阻塞模式,这点与 SocketChannel 不同。