前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >张龙netty学习笔记 P52 executor

张龙netty学习笔记 P52 executor

作者头像
平凡的学生族
发布2019-05-25 09:10:09
3980
发布2019-05-25 09:10:09
举报
文章被收录于专栏:后端技术后端技术

线程工厂

常规的线程逻辑是用Runnable或者Thread创建线程,然后调用start()。这个做法的缺点是,线程的行为和线程的创建绑定到了一起。 所以最好是将线程的创建它的任务解耦。

ThreadPerTaskExecutor

命令模式

ThreadFactory DefaultThreadFactory Excutor SerialExecutor

NioEventLoopGroup

首先给出其类层次图

跟踪NioEventLoopGroup的默认构造方法,直至MultithreadEventExecutorGroup的构造方法:

代码语言:javascript
复制
protected MultithreadEventExecutorGroup(int nThreads, Executor executor,
                                            EventExecutorChooserFactory chooserFactory, Object... args) {
        //  NioEventLoopGroup是一个MultithreadEventExecutorGroup
        // 也就是基于多线程的Nio事件循环
        if (nThreads <= 0) {
            throw new IllegalArgumentException(String.format("nThreads: %d (expected: > 0)", nThreads));
        }

        if (executor == null) {
            executor = new ThreadPerTaskExecutor(newDefaultThreadFactory());
            // 它的Executor是会为每一个任务创建一个新线程。
        }

        children = new EventExecutor[nThreads];

        for (int i = 0; i < nThreads; i ++) {
            boolean success = false;
            try {
                children[i] = newChild(executor, args);
                // 在NioEventLoopGroup中,chlidren的每个元素其实都是一个NioEventLoop
                success = true;
            } 
        ...

其中children的类型为EventExcutor[]。 其内部维护了一个EventExcutor数组,每个元素都由newChild构造,而该方法在NioEventLoopGroup.newChild有实现:

代码语言:javascript
复制
@Override
    protected EventLoop newChild(Executor executor, Object... args) throws Exception {
        return new NioEventLoop(this, executor, (SelectorProvider) args[0],
            ((SelectStrategyFactory) args[1]).newSelectStrategy(), (RejectedExecutionHandler) args[2]);
    }

原来其内部维护了一个NioEventLoop数组,名叫children。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程工厂
  • ThreadPerTaskExecutor
  • NioEventLoopGroup
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档