一张图让你看明白Nettty EventLoop是个什么东东

说明一下:

EventExecutorGrop,这个接口没啥,只是增加了一些方法,比如next(), shutdownGracefully()。

EventExecutor,这个接口也没啥,直接继承于EventExecutorGrop,添加了几个功能方法而已。

EventLoopGroup,这个接口也没啥,直接继承于EventExecutorGrop,添加了一个典型的方法,register()。

EventLoop,这个接口也没啥,直接继承于EventLoopGroup, OrderedEventExecutor, 添加了几个功能方法而已。

所以,这4个接口,是一个东西,说白了,就是一个Executor,可以执行task,也可以定时执行task,只不过添加了register(channel),next()功能,正因为有了next(),返回一个EventExecutor,或EventLoop,所以,本身就是一个线程池,来看看next()的实现,这是轮询的方式:


从上图,还可以看到,EventLoop就一个有用的实现类,它是SingleThreadEventLoop,其实就是个SingleThreadEventExecutor。

SingleThreadEventExecutor是个单线程类,内部有一个taskQueue,所有的任务,都是先加到这个taskQueue中,再按task添加的顺序执行。

SingleThreadEventLoop的具体实现类,比如NioEventLoop还可以设置ioRatio,执行原理,很简单,反正是依次执行taskQueue中的任务,计算执行时间即可,具体请看此类r的un()方法。

关于netty里的pipeline

这个东西很好理解,记住以下,再看源代码。

pipeline分inbound和outbound。

凡是read操作,都是inbound,凡是write操作,都是outbound。

read-->inbound都是从head到tail依次执行handler,write-->outbound都是从tail到head依次执行handler。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值