请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

NioEventLoop中的方法inEventLoop

  • 一个NioEventLoopGroup包含多个NioEventLoop
  • 一个NioEventLoop绑定到一个线程中
  • 所有在NioEventLoop处理的IO事件都在这个绑定的线程中执行
  • 一个Channel注册到一个NioEventLoop中
  • 一个NioEventLoop可以分配给多个Channel

以上是在Netty In Action中看到的描述,然后再结合老师的讲解,现在还是有个疑问,NioEventLoop中是一个线程去执行所有IO事件,那为什么还需要在里面使用inEventLoop判断是否为当前线程?(使用单个线程处理是为了减少Context switch)

正在回答

1回答

因为有可能是外部线程调用NioEventLoop对象去执行一些操作,这个时候,当前线程就是外部线程

0 回复 有任何疑惑可以回复我~
  • 提问者 Daniel2017 #1
    请问具体外部线程是?能否举一个例子,谢谢
    回复 有任何疑惑可以回复我~ 2019-05-21 22:02:51
  • 慕沐3014698 回复 提问者 Daniel2017 #2
    比如我在pipeline中添加的某个ChannelHandler为其绑定了DefaultEventLoopExecutor,这时在传播inbound或者outbound事件时实际执行的线程就不是reactor线程了
    回复 有任何疑惑可以回复我~ 2019-06-22 14:48:04
  • 提问者 Daniel2017 回复 慕沐3014698 #3
    谢谢解答
    回复 有任何疑惑可以回复我~ 2020-06-02 01:24:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信