JDK 1.3 introduced the addShutdownHook() method to the java.lang.Runtime class. Implementing a shutdown hook is useful if you need to take some action right before your app stops running.
To add a shutdown hook, create an instance of the java.lang.Thread class and supply it as a parameter to the addShutdownHook() method. Because shutdown hooks should be short and to the point, anonymous inner classes are particularly suited for shutdown hooks.
Here’s a simple shutdown hook that prints the words “shutting down”:
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("shutting down"); }});
The Thread’s start() method will be called by the virtual machine when it’s shutting down.
In addition to adding a shutdown hook, you may also remove one by calling the method with a reference to a previously registered Thread object. Keep in mind that in order to deregister a hook, you must keep a reference to it, so an anonymous class won’t work in this situation.
If you need to do work, cleanup, release resources, etc. when your application is stopping, you may find the shutdown hook useful.