Is there any possible way to add swing into a shutdown hook (that is, display a popup upon the VM shutting down)?
I realize that if I try to make a new JFrame, it will give me an error, as it tries to register a shutdown hook, which fails as the VM is already shutting down. I’m just wondering if there is in fact any way around this
You really shouldn’t be doing this. From the
Runtime.addShutdownHookspecification:Specific warnings here that suggest you not do this:
“Shutdown hooks should also finish their work quickly.”
Relying on anything that might take a while to do its work, or blocking indefinitely on user-input like
JOptionPanedialogs, is not what you should be doing in your shutdown hook.“Attempts to use other thread-based services such as the AWT event-dispatch thread, for example, may lead to deadlocks”
Swing runs on-top of AWT, whose underlying event-dispatch thread may be in the process of shutting down, too. Trying to use Swing or AWT while shutting down can lead not only to dead locks but also may just not work at all, anyways.
“If the virtual machine aborts then no guarantee can be made about whether or not any shutdown hooks will be run”
There are no guarantees your user could even possibly get your message, since shutdown hooks are only guaranteed to run when it exits normally or terminated — not when halted or aborted.