在看公司的代码时,发现一段奇妙的代码。 情景: 1) CalcManager 用command line运行。他能够产生Calculator Process。 2) Calculator Process Sevice进程, 以Window 进程的形式存在。 需求: CalcManager 能够管理他生长的Calc Process。 也就是说CalcManagerShutdown的时候Calc Process也要能自动Shutdown。 如果我们提供一个exit的button在GUI上面的话 上面实现起来非常顺, 在exit 的action上先Shutdown这些Calc Process 然后在 System.exit(0), 但是假如用户不小心在Command 窗口上按了Ctrl + c的话或者在Task Manager上killCalcManager进程的话,那么 Kill Calc Process这个机会就没有。 Java提供了这个问题的解决方案public void addShutdownHook(Thread hook)。 当java虚拟机推出的时候回调用hook Thread里面的run方法,也就是运行那个hook线程。 Hook经常被叫着钩子方法。 其实这种应用也不少。 想Ms Word 在编辑时 都会Open一个临时文件,不知道大家有没有注意。我们可以试试通过Task Manager去Kill Word的进程, 这时这个临时文件应该也会被Clean掉的。 详细可以看这片文章http://www.onjava.com/pub/a/onjava/2003/03/26/shutdownhook.html#listing1
发表评论
- 浏览: 220516 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
我的相册
VB-seamless
共 13 张
共 13 张
最近加入圈子
最新评论
-
使用Terracotta和Tomcat建 ...
renavatior 写道"运行start.bat 9081 这样我们就启动了目 ...
-- by rainsf -
使用Terracotta和Tomcat建 ...
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat ...
-- by renavatior -
广州3年多经验 5500的 ...
fucku 写道广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多, ...
-- by yongfan_420 -
广州3年多经验 5500的 ...
广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多,导致机会也没有这 ...
-- by fucku -
广州3年多经验 5500的 ...
想高工资就去厂家咯,老在集成商里面混能有多大个奔头
-- by fucku






评论排行榜