zoukankan      html  css  js  c++  java
  • Netty源码剖析-关闭服务

    参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code!

    ----主线:

     

     ----源码:

      先在服务端加个断点和修改下代码:如图:

     然后启动server和client;然后跳过bossGroup到workerGroup;进入workerGroup的关闭:在此之前呢,先在NioEventLoop里面的关闭处打个断点:

    然后跟进来看看closeAll();

     这里selectAgain();目的是为了去除canceled的key,接下来的key都是有效的key了。完成之后接着回去

     进入到confirmShutdown();

      

     这里会run Task和hook;挨个执行则返回:

    ----总结:

        ①关闭服务本质:

          关闭所有连接及Selector:

        java.nio.channels.Selector#keys

          java.nio.channels.spi.AbstractInterruptibleChannel#close

          java.nio.channels.SelectionKey#cancel

        selector.close();

        关闭所有线程:退出循环体for(;;).

        ②关闭服务要点:

          优雅(DEFAULT_ SHUTDOWN_ _QUIET_ PERIOD )

          可控(DEFAULT_ SHUTDOWN_ _TIMEOUT)

          先不接活,后尽量干完手头的活(先关boss后关worker: 不是100%保证)

    我只想做的更好,仅此而已。

  • 相关阅读:
    第07组 Alpha冲刺 (2/6)
    第07组Alpha冲刺(1/6)
    第四次作业
    面试题练习
    SpringMVC访问静态资源
    MyBatis基础
    Spring注解和jdk注解
    自动代理生成器
    aspect xml
    Spring-案例
  • 原文地址:https://www.cnblogs.com/-qilin/p/11821896.html
Copyright © 2011-2022 走看看