вы можете попробовать что-то вроде этого:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() { /*
my shutdown code here
*/ }
});
редактирование:
перехватчик не будет завершать работу приложения. вместо этого он дает разработчику возможность выполнить любую очистку, которую он / она желает при завершении работы.
из JavaDoc для Runtime (хорошее чтение, если вы планируете использовать этот метод):
Хук отключения - это просто инициализированный, но незапущенный поток. Когда виртуальная машина начинает свою последовательность выключения, она запускает все зарегистрированные обработчики завершения работы в неустановленном порядке и позволяет им запускаться одновременно. Когда все перехватчики завершены, он запустит все непроверенные финализаторы, если финализация при выходе была включена. Наконец, виртуальная машина остановится. ...