这事还得从线程和RPC那里说起: PART1:咱们之前多线程那里光知道一个线程启动的几种方式:new Thread、通过Runnable、通过Callable、通过线程池等等以及通过其他被封装好的但是底层还是前面几种方法搞出来线程的方式,不管是哪种【其实都是 想要启动线程需要调用 Thread 类的 start() 方法,并在 run() 方法中定义需要执行的任务 。】,咱们确实没有好好看看线程优雅的停止这块,复习RPC那里的东西我突然想到这了,赶紧,整起…
- 咱们一般不会手动停止一个线程,而是允许线程运行到结束,然后让它自然停止。不就是咱们经常干的事嘛,什么运行多长时间你这个线程滚蛋、什么跑完这个任务你滚蛋、哪个标志位变成什么样哪个方法被触发什么东西被XXX你这个线程滚蛋…。但是
依然会有许多特殊的情况需要我们提前停止线程,比如:用户突然关闭程序,或程序运行出错重启等 。【在这种情况下,即将停止的线程在很多业务场景下仍然很有价值。尤其是我们想写一个健壮性很好,能够安全应对各种场景的程序时,正确停止线程就显得格外重要。但是Java 并没有提供简单易用,能够直接安全停止线程的能力。】
PART2:在我的这篇:手写RPC~Version07(RPC原理、序列化框架们、网络协议框架们 、RPC 能帮助我们做什么呢、RPC异常排查:ctrl+F搜超时),笔记中说到,PRC框架有好几个府兵,其中一个站大门口的就是:(RPC 框架的)服务发现机制: 当然啦,真正的优雅停机,还得是下面这一部分:
- (RPC 框架的)关闭流程:
巨人的肩膀: Java并发编程之美 Java并发编程实战 极客时间 徐隆曦老师的《Java 并发编程核心 78 讲》
|