当前位置: 首页 > news >正文

安阳做网站优化七牛云cdn配置wordpress

安阳做网站优化,七牛云cdn配置wordpress,西宁网站建设维护,免费咨询抑郁症示例 还是拿之前启动源码的示例#xff0c;来分析NioEventLoopGroup源码 NioEventLoopGroup构造函数 这里能看到会调到父类的MultiThread EventLoopGroup的构造方法 MultiThreadEventLoopGroup 这里我们能看到#xff0c;如果传入的线程数目为0#xff0c;那么就会设置2倍… 示例 还是拿之前启动源码的示例来分析NioEventLoopGroup源码 NioEventLoopGroup构造函数 这里能看到会调到父类的MultiThread EventLoopGroup的构造方法 MultiThreadEventLoopGroup 这里我们能看到如果传入的线程数目为0那么就会设置2倍的核心的线程数目接着继续会调用父类的MultithreadEventExecutorGroup的构造方法 MultiThreadEventExecutorGroup // todo 在这个构造方法中,完成了一些属性的赋值, 彻底构造完成 事件循环组对象 // todo Object... args 是 selectorProvider, selectStrategyFactory, RejectedExecutionHandlers.reject()的简写 protected MultithreadEventExecutorGroup(int nThreads, Executor executor,EventExecutorChooserFactory chooserFactory, Object... args) {if (nThreads 0) {throw new IllegalArgumentException(String.format(nThreads: %d (expected: 0), nThreads));}if (executor null) {// todo 下面需要的参数,一开始使用无参的构造方法时, 传递进来的 就是null ,执行这一行代码, 创建默认的线程工厂// todo ThreadPerTaskExecutor 意味为当前的事件循环组 创建Executor , 用于 针对每一个任务的Executor 线程的执行器// todo newDefaultThreadFactory根据它的特性,可以给线程加名字等,// todo 比传统的好处是 把创建线程和 定义线程需要做的任务分开, 我们只关心任务, 两者解耦// todo 每次执行任务都会创建一个线程实体// todo NioEventLoop 线程命名规则 nioEventLoop-1-XX 1代表是第几个group XX第几个eventLoopexecutor new ThreadPerTaskExecutor(newDefaultThreadFactory());}// todo children是线程执行器组里面的线程执行器children new EventExecutor[nThreads];// todo 循环实例化for (int i 0; i nThreads; i) {boolean success false;try {// todo 创建EventLoop, 直接看一下这个newChild , 它的返回值是 EventExecutor , 但是如果我们直接去看它子类的实现的话// todo 会发现new 的实例其实的 NioEventLoop, 这并不奇怪, 因为,NioEventLoop间接实现了 EventExecutor 接口// todo 换句话说, 其实就是 NioEventLoop 就是 拥有线程执行器的功能children[i] newChild(executor, args);success true;} catch (Exception e) {// TODO: Think about if this is a good exception typethrow new IllegalStateException(failed to create a child event loop, e);} finally {if (!success) {for (int j 0; j i; j) {children[j].shutdownGracefully();}for (int j 0; j i; j) {EventExecutor e children[j];try {while (!e.isTerminated()) {e.awaitTermination(Integer.MAX_VALUE, TimeUnit.SECONDS);}} catch (InterruptedException interrupted) {// Let the caller handle the interruption.Thread.currentThread().interrupt();break;}}}}}// todo chooser 在这里 初始化了chooser chooserFactory.newChooser(children);final FutureListenerObject terminationListener new FutureListenerObject() {Overridepublic void operationComplete(FutureObject future) throws Exception {if (terminatedChildren.incrementAndGet() children.length) {terminationFuture.setSuccess(null);}}};for (EventExecutor e : children) {e.terminationFuture().addListener(terminationListener);}SetEventExecutor childrenSet new LinkedHashSetEventExecutor(children.length);Collections.addAll(childrenSet, children);readonlyChildren Collections.unmodifiableSet(childrenSet); }总结一下这里一共做了几件事 创建线程执行器ThreadPerTaskExecutor创建线程执行器里面的线程执行器for {newChild}创建线程选择器 用一张图总结一下 这里的newChild比较重要需要进一步分析 父类的newChild最终会调用到子类 NioEventLoopGroup的newChild方法 NioEventLoopGroup 这里几个参数说明一下 第一个是父类MutiThreadEventLoopGroup第二个是父类创建的执行器ThreadPerTaskExecutor第三个是SelectProvider根据不同的系统来调用select第四个是SelectStrategy第五个是拒绝处理器 这里会调用到NioEventLoop的构造方法 NioEventLoop 后面就到了NioEventLoopGroup的创建流程了这里就不详细debug了
http://www.pierceye.com/news/306337/

相关文章:

  • 很多网站开发没有框架如何制作的长沙旅游景点大全排名
  • 云南网站推广的目的做动画的网站有哪些
  • 网站建设公司在哪里找资源模拟建设网站
  • 如何盗用网站模板哈尔滨公告
  • 管理咨询网站焦作专业做网站公司哪家好
  • 在国内做跨境电商怎么上外国网站网站不收录
  • 网站介绍ppt怎么做屏蔽网站ip
  • it公论 是建立在什么网站wordpress搬迁数据库连接失败
  • 南县建设局网站营销型网站开发流程包括
  • 有关应用网站申请免费网站空间
  • 二手书交易网站开发现状营销型网站建设推荐乐云seo
  • 山西网站建设怎么样seo优化网站多少钱
  • 网站建设设计模板磁力链最佳的搜索引擎
  • 单位外部网站建设价格哪些网站可以做视频直播
  • 广州黄埔网站建设公司国外做调灵风暴的网站
  • 珠海附近交友平台软件广州网站优化推广方案
  • cgi做网站如何将网站加入百度图 推广
  • 小贷做网站深圳手机app软件开发
  • 上海平台网站建设费用页面模板不存在怎么办
  • 西安网站排名公司上海工商网查询官网
  • 网站建设协调机制建网站 可以看到访客吗
  • 学生做网站的工作室南和住房和城乡建设局网站
  • 潍坊网站制作案例广东十大网站建设排名
  • 网站建设市场调研框架网站建设流程步骤怎么样
  • 喜茶品牌策划全案案例seo技术
  • 简速做网站中国企业网站建设案例
  • 做网站不给源码莱州网站建设包年多少钱
  • 好玩有趣的网站贵州省城乡建设厅网站材料价
  • 投资公司网站设计上海自动seo
  • 网络营销导向网站建设的基础是什么创新驱动发展战略的内容