Netty 线程模型

  1. EventLoop
    1. EventLoop和Channel

线程模型指定了操作系统,编程语言,框架或者应用程序的上下文中的线程管理的关键方面

演进:

  1. 创建和启动新线程

  2. 线程池技术

    不能消除由上下文切换带来的开销,高负载情况下更严重

  3. EventLoop

EventLoop

1
2
3
4
5
6
while(!terminated){
List = 阻塞,直到有事件就绪可被运行
for(Runnable){
run();
}
}
  • 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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

csdn zhihu github