Runtime.getRuntime().addShutdownHook(new ShutdownThread()) H

在看公司的代码时,发现一段奇妙的代码。 情景:         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

你可能感兴趣的:(thread,C++,c,虚拟机,C#)