知识卡片
单线程不宜阻塞
内容
一个 EventLoop 可能服务多个 Channel,因此任何长耗时或阻塞操作都会拖慢同循环上的其他连接。Netty 的线程模型要求业务把慢任务移出 I/O 线程,否则异步框架会被同步业务重新拖回阻塞模型。
参考来源
- 位置:《Netty实战》第03章《Netty线程模型》(源文件:_epub-src/OEBPS/Text/chapter3.xhtml)
- 结论依据:原文说明一个 EventLoop 可能处理多个 Channel,且不要阻塞 Channel 的 I/O 线程,否则会影响同 EventLoop 中其他 Channel 的事件处理。
- 原始内容:一个EventLoop对象可能被分配处理多个Channel对象……千万不要阻塞Channel对象的I/O线程,这可能会影响该EventLoop对象中所包含的其他Channel对象的事件处理。