Насколько я знаю, в Java нет способа отловить события завершения работы системы или выхода из системы.
Однако вы можете поймать, когда JVM завершается, добавив добавив перехватчик отключения .
AWT WindowAdapter также имеет событие windowClosing, которое вы можете переопределить и подключить к окну, которое хотите отслеживать. Свинг наследует это; Я верю, что SWT делает то же самое. Помните, что вы ДОЛЖНЫ избавиться от окна вручную, если переопределите это событие!
Я полагаю, что MS Windows будет запускать эти события во время закрытия. Я полагаю, что SIGTERM в Linux / UNIX делает то же самое, хотя Linux вскоре после этого будет SIGKILL, если это произойдет во время завершения работы.