优雅停机?这个名词我是服的,如果抛开专业不谈,多好的名词啊!
其实优雅停机,就是在要关闭服务之前,不是立马全部关停,而是做好一些善后操作,比如:关闭线程、释放连接资源等。
再比如,就是不会让调用方的请求处理了一增,一下就中断了。而处理完本次后,再停止服务。
Java语言中,我们可以通过
Runtime.getRuntime().addShutdownHook()
方法来注册钩子,以保证程序平滑退出。(其他语言也类似)
来个栗子:publicclassShutdownGraceFullTest{
/**
* 使用线程池处理任务
*/
publicstaticExecutorServiceexecutorService =Executors.newCachedThreadPool();
publicstaticvoidmain(String[] args) {
//假设有5个线程需要执行任务
for(inti =0; i <5; i++){
finalintid = i;
Threadtaski =newThread(newRunnable() {
@Override
publicvoidrun() {
System.out.println(System.currentTimeMillis() +" : thread_"+ id +" start...");
try{