一张图让你看明白Nettty EventLoop是个什么东东
2017-06-12 21:00
316 查看
说明一下:
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。
相关文章推荐
- 我们在调用EventLoop.execute()方法时究竟做了一些什么工作
- [置顶] 大数据:一张图让你明白什么是大数据
- 两分钟让你明白什么是ERP!
- 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!
- 让你明白什么是ERP[转载]
- [Javascript] Task queue & Event loop.
- 一张图说明softmax layer是什么
- 今天我才明白,什么叫做一本和二本的区别
- 一张图让你了解末日前你身边的人都在用什么操作系统
- 什么是TNotifyEvent
- Expedition 10.1是什么东东? 一探究竟
- Eclipse出错:unhandled event loop exception no more handles
- 浅谈CocoaPods是什么东东
- 在外链的javascript中常常在后面加一些参数才明白是什么意思。
- 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!
- [eclipse]Unhandled event loop exception | No more handles 分类: eclipse 2014-08-29 09:45 282人阅读 评论(0) 收藏
- dsp,dsw,ncb,opt,clw,plg,aps文件中分别存放的是什么东东,有什么作用?
- unhandled event loop exception eclipse/An error has occurred.See the log file终于找到解决方法了
- Understanding the node.js event loop
- 两分钟明白什么是ERP