Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() { /*
my shutdown code here
*/ }
});
Это должно быть в состоянии перехватить сигнал, но только в качестве промежуточного шага до того, как JVM полностью отключится, поэтому это может быть не то, что вы ищете.
Вам необходимо использовать SignalHandler
(sun.misc.SignalHandler
) для перехвата сигнала SIGINT
, запускаемого Ctrl + C (в Unix а также на Windows).
См. эту статью (pdf, стр. 8 и 9).