Я разработал распределенное онлайн-приложение Java, которое обычно активно все время (не с графическим интерфейсом).
Мне интересно выполнить некоторые действия перед отключением на случай, если администратор заинтересован в таком отключении.
Я знаю, что CTRL^C останавливает JVM, интересно, могу ли я перехватить CTRL^C и выполнить некоторые дополнительные операции перед выключением JVM или добавить какой-нибудь хук к событию CTRL^D, чтобы сделать то же самое.
Я почти уверен, что где-то есть сообщение, описывающее подобные вопросы, и я был бы признателен за ссылки на такие сообщения.
меня не интересуют сторонние внешние банки или какое-либо решение JNI.
Я буду признателен за фрагмент кода, если нет поста, посвященного тому же вопросу.
Дополнительное ограничение: Это решение должно работать как для UNIX, так и для Windows.
Изменить
Одним из предложенных здесь решений является использование Runtime.getRuntime().addShutdownHook(new Thread() {})
Насколько я понимаю, создается новый поток, который будет слушать и ждать завершения события.
Интересно, могу ли я как-то сигнализировать основному потоку о том, что произошло отключение (у меня есть распределенная система, как я уже упоминал, и мне нужно информировать каждый отдельный поток о таком событии)?
Могу ли я добавить несколько потоков для прослушивания этого события?