Запуск кода при выходе из программы в Java

Можно ли написать метод, который System.exit будет вызывать при завершении программы?


person Alex    schedule 21.04.2011    source источник
comment
возможный дубликат Перехват вызова отключения Java-машины?   -  person McDowell    schedule 21.04.2011


Ответы (5)


Используйте Runtime.getRuntime().addShutdownHook(Thread).

person Petar Minchev    schedule 21.04.2011

Крючки отключения - это ответ... вот статья о них. Они не приходят без проблем (некоторые из них обсуждаются в статье).

person TofuBeer    schedule 21.04.2011

Вы можете использовать хук выключения.

http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)

Обратите внимание, что перехватчики выключения не будут запускаться, если виртуальная машина аварийно завершает работу или вызывается Runtime.halt(int).

person Dev    schedule 21.04.2011
comment
Затем, что делать в случае вызова Runtime.halt(int) или аварийного прерывания - person guru_001; 25.07.2016
comment
@ guru_001 Ничего нельзя сделать, виртуальная машина резко останавливается, как если бы она разбилась. - person Dev; 25.07.2016

Вы можете добавить Крючок отключения ВМ.

person lobster1234    schedule 21.04.2011

Изучите перехватчики выключения, см. http://docs.oracle.com/javase/8/docs/technotes/guides/lang/hook-design.html

person Dilum Ranatunga    schedule 21.04.2011