Loading...

解释一下Selector、Channel

阅读 ...

Selector

Selector是Java Non-blocking I/O中用于实现I/O多路复用的组件。

Selector有4种事件类型,分别是:

OP_READ 表示通道中有数据可读
OP_WRITE 表示可以向通道中写入数据
OP_CONNECT 表示通道完成连接操作
OP_ACCEPT 表示通道可以接受新的连接

Selector的作用有两个:

一个是通过一个Selector实例,程序可以同时监听多个通道的I/O事件。

另一个是Selector通常与非阻塞通道配合使用,可以实现高效地非阻塞I/O操作。

Channel

Channel是Java Non-blocking I/O中的一个核心概念,主要用于数据的读写操作。

Channel有四种类型:

SocketChannel 用于基于TCP的网络通信,可以与服务器或者客户端进行连接
ServerSocketChannel 仅用于TCP服务端, 用于监听TCP连接
DatagramChannel 用于基于UDP的网络通信
FileChannel 用于从文件中读取或者向文件中写入数据

Channel是双向的,可以同时支持读取和写入。

传统的流要么是输入流,要么是输出流,只能是单向的。

因此,Channel比传统的I/O流更灵活和高效。

Channel可以结合Selector实现多路复用,从而处理多个并发连接。

本文由 iamxurulin 原创发布,转载请保留原文链接。
最后更新于 2026-08-23 17:21:42
关于作者与文章

本文为 iamxurulin 原创技术文章。如对内容有疑问或建议,欢迎在评论区交流讨论。

Coder_Studio - 记录后端开发、算法与 AI 的成长之路