netty中的多线程

netty多线程 (1).jpg

MultithreadEventExecutorGroup

image.png
  • MultithreadEventExecutorGroup:NioEventLoopGroup构造逻辑实现类

  • NioEventLoopGroup:是 MultithreadEventExecutorGroup 的子子类,实现了newChild(Executor var1, Object... var2)方法,为 MultithreadEventExecutorGroup 中 this.children 数组字段赋值;

即 每个child 都是一个 NioEventLoop ,每个NioEventLoop 都维护一个 “taskQueue” 和 一个 “具体的executor”。这个 executor 是在MultithreadEventExecutorGroup 的构造函数中传入的 ThreadPerTaskExecutor

ThreadPerTaskExecutor:单线程的executor。赋值给loop里的executor。即,loop里的executor是单线程的,group负责查找可用的loop,相当于线程池的功能

XXexecutor:是 Executor的实现类,用来制定具体任务执行规则,一般来说指 ”线程创建规则“可以启动新线程【比如,这里的ThreadPerTaskExecutor】,也可以使用线程池【比如 ThreadPoolExecutor 】

  • NioEventLoop:是 SingleThreadEventExecutor 的子类。

AbstractEventExecutorGroup:实现了void execute(Runnable command);方法
SingleThreadEventExecutord:实现了void execute(Runnable command);方法

SingleThreadEventExecutor

image.png
  • SingleThreadEventExecutor:子类NioEventLoop
  • SingleThreadEventExecutor:实现了void execute(Runnable command);方法。execute 方法里面使用外部传入的 executor 来创建线程
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容