现在的位置: 首页 > 综合 > 正文

How Tomcat Works 16

2018年05月22日 ⁄ 综合 ⁄ 共 422字 ⁄ 字号 评论关闭

Shutdown Hook

 

为了避免用户不正当的关闭tomcat(比如直接关掉控制台或ctrl+c),tomcat使用了Shutdown Hook。

 

java程序结束的条件:

1,system.exit或,所有线程执行结束。

2,强制关闭比如ctrl+c

 

解决办法:

1,预先设置Shutdown Hooks,在java程序关闭时会单起n个线程同时执行所有Shutdown Hooks。

2,执行未执行过的finalizers。

 

我们使用第一种解决办法。那么就需要做:

1,写一个继承Thread类的hook类

2,填充它的run方法

3,实例化这个hook类

4,把这个实例加入到runtime的hook中

 

在tomcat中,hook类被写成了Catalina的inner class。在start方法中把它设进了runtime。但当server的await方法返回时,或用shutdown.bat终止程序时,也就是正常终止时,在程序中会把这个hook remove掉。

【上篇】
【下篇】

抱歉!评论已关闭.