Netty 线程模型
线程模型指定了操作系统,编程语言,框架或者应用程序的上下文中的线程管理的关键方面
演进:
创建和启动新线程
线程池技术
不能消除由上下文切换带来的开销,高负载情况下更严重
EventLoop
EventLoop
1 | while(!terminated){ |
- EventLoopGroup实现并拓展了线程池ExecutorService接口
- EventLoop包含了SingleThreadEventExecutor
事件和任务都是以先进先出的顺序执行,保证正确的顺序
所有的IO操作和事件都由已经被分配给了EventLoop的那个Thread来处理
每个EventLoop都由自己的任务队列,独立于其他的EventLoop
EventLoop和Channel
一个EventLoop将被分配给多个Channel,使用少量的Thread支撑大量的Channel
一旦一个Channel被分配给一个EventLoop,它将在整个生命周期中都使用这个EventLoop(以及相关联的Thread)
一个EventLoop使用一个ThreadLocal,多个Channel将共享它
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wshten@gmail.com
文章标题:Netty 线程模型
本文作者:KevinTen
发布时间:2019-11-11, 00:00:00
最后更新:2019-11-11, 21:17:28
原始链接:http://github.com/kevinten10/2019/11/11/Netty/Netty-线程模型/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。