Search code examples
javaterminatetermination

Run a method on main thread/program termination?


is it possible to have a method be called when the main thread or the entire program terminates? I'm aware of Thread's .join() method, but I do not think it will work on the main thread. For example, if I create a temporary directory, I would like to delete that temporary directory when the program terminates, but I would like for that to happen when the program terminates, not after something like the main method.

I do not want this:

public static void main() {
    ....Do something
    ....Delete temp directory
}

Solution

  • As user:Mad Programmer mentioned above, you could use ShutdownHook.

    public static void main(String[] args) 
    {
      ShutdownHookThread shutdownHook = new ShutdownHookThread();
      Runtime.getRuntime().addShutdownHook(shutdownHook );
    }
    
      private static class JVMShutdownHook extends Thread 
      {
       public void run() 
       {
       // tempDirectory.delete();
       }
      }