请解释Java NIO中Selector的核心作用与工作原理。
考察说明
考查对Java NIO非阻塞I/O模型中Selector机制的理解。
回答思路
- 【回答框架 1】Selector是Java NIO中用于实现单线程管理多个Channel的组件,它通过事件驱动模型,让一个线程能监控多个通道的I/O状态。
- 【回答框架 2】核心机制是注册感兴趣的事件(如OP_READ、OP_WRITE),调用select()阻塞直到有事件发生,然后通过selectedKeys()获取就绪的通道集合进行处理。
- 【回答框架 3】与传统的阻塞I/O相比,Selector避免了为每个连接创建线程,显著提升了系统并发处理能力,但需要注意处理大量连接时的CPU和内存开销。
- 【关键点 1】Selector用于单线程管理多个Channel。
- 【关键点 2】基于事件驱动,支持非阻塞I/O。
- 【关键点 3】通过select()获取就绪事件。
- 【易错点 1】混淆Selector和Channel的职责。
- 【易错点 2】忽略取消注册或清理已处理事件。