Class ShutdownHooks
- java.lang.Object
-
- org.jline.utils.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 theremove(Task)
method. All tasks must implement theShutdownHooks.Task
interface, which defines a singleShutdownHooks.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 aRunnable
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>
Tadd(T task)
Adds a task to be executed when the JVM shuts down.static void
remove(ShutdownHooks.Task task)
-
-
-
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
-
remove
public static void remove(ShutdownHooks.Task task)
-
-