第三节 netty源码分析之NioEventLoopGroup的 newChild()方法分析

一、概述

在第二节中,分析了NioEventLoopGroup 的构造方法,会调用到父类MultithreadEventExecutorGroup的构造方法,里面有一个很重要的方法children[i] = newChild(executor, args),这个方法被NioEventLoopGroup重写了。这一节就分析一下newChild做了什么。

二、NioEventLoopGroup的newChild方法

   protected EventLoop newChild(Executor executor, Object... args) throws Exception {
   
        //executor=new ThreadPerTaskExecutor(newDefaultThreadFactory());
        //args参数都是由MultithreadEventExecutorGroup上面传过来的,具体如下 
        //SelectorProvider用来创建ServerSocketChannel
        //DefaultSelectStrategyFactory.INSTANCE===》new DefaultSelectStrategyFactory()
        //RejectedExecutionHandlers.reject() ===》 new RejectedExecutionHandler()
        return new NioEventLoop(this, executor, (SelectorProvider) args[0],
            ((SelectStrategyFactory) args[1]).newSelectStrategy(), (RejectedExecutionHandler) args[2]);
    }

NioEventLoop的构造方法。

NioEventLoop(NioEventLoopGroup parent, Executor executor, SelectorProvider selectorProvider,
                 SelectStrategy strategy, RejectedExecutionHandler rejectedExecutionHandler) {
   
     	//调用父类的构造方法,主要是将保存 线程组 NioEventLoopGroup
    	//创建一个21亿的任务队列
    	//executor负责创建线程执行器也保存起来。
        super(parent, executor, false, DEFAULT_MAX_PENDING_TASKS, rejectedExecutionHandler);
        /*非主线代码,忽略
        if (selectorProvider == null) {
            throw new NullPointerException("selectorProvider");
        }
        if (strategy == null) {
            throw new NullPointerException("selectStrategy");
        }*/
    
        //provider=SelectorProvider.provider() jdk自带的用来创建ServerSocketChannel
        provider = selectorProvider;
    	//openSelector方法负责将jdk自带的hashSet结构的selectedKeys 也封装成netty自己定义的SelectedSelectionKeySet里面是一个数组结构,这个优化是可以配置的。
        final SelectorTuple selectorTuple = openSelector();
        //替换了数据结构selectedKeys   publicSelectedKeys的原生selector
        selector = selectorTuple.</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值