Class ShutdownHooks


  • public final class ShutdownHooks
    extends java.lang.Object
    Manages the JLine shutdown-hook thread and tasks to execute on shutdown.

    The ShutdownHooks class provides a centralized mechanism for registering tasks that should be executed when the JVM shuts down. It manages a single shutdown hook thread that executes all registered tasks in the reverse order of their registration.

    This class is particularly useful for terminal applications that need to perform cleanup operations when the application is terminated, such as restoring the terminal to its original state, closing open files, or releasing other resources.

    Tasks are registered using the add(Task) method and can be removed using the remove(Task) method. All tasks must implement the ShutdownHooks.Task interface, which defines a single ShutdownHooks.Task.run() method that is called when the JVM shuts down.

    Example usage:

     // Create a task to restore the terminal on shutdown
     ShutdownHooks.Task task = ShutdownHooks.add(() -> {
         terminal.setAttributes(originalAttributes);
         terminal.close();
     });
    
     // Later, if the task is no longer needed
     ShutdownHooks.remove(task);
     
    Since:
    2.7
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  ShutdownHooks.Task
      Essentially a Runnable which allows running to throw an exception.
    • Constructor Summary

      Constructors 
      Constructor Description
      ShutdownHooks()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static <T extends ShutdownHooks.Task>
      T
      add​(T task)
      Adds a task to be executed when the JVM shuts down.
      static void remove​(ShutdownHooks.Task task)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ShutdownHooks

        public ShutdownHooks()
    • Method Detail

      • add

        public static <T extends ShutdownHooks.Task> T add​(T task)
        Adds a task to be executed when the JVM shuts down.

        This method registers a task to be executed when the JVM shuts down. Tasks are executed in the reverse order of their registration, so the most recently added task will be executed first.

        If this is the first task to be added, a shutdown hook thread will be created and registered with the JVM. This thread will execute all registered tasks when the JVM shuts down.

        Type Parameters:
        T - the type of the task
        Parameters:
        task - the task to be executed on shutdown
        Returns:
        the task that was added (for method chaining)
        Throws:
        java.lang.NullPointerException - if the task is null