Как обработать событие закрытия приложения в Java?
Вопрос
Имея консольное приложение, сервер, принимающий несколько подключений от клиентов, возможно ли наличие прослушивателя или события на закрывающемся приложении?В этом случае я хочу сказать всем подключенным клиентам аккуратно отключиться, прежде чем приложение действительно закроется.
Есть решение?Спасибо!
Решение
Вы хотите использовать перехватчик завершения работы:
Runtime.getRuntime().addShutdownHook(theHookThread);
Таким образом, поток будет запущен после завершения работы JVM, см. здесь для получения подробной информации.
Другие советы
Если под закрытием приложения вы имеете в виду, что операционная система убивает серверный процесс?
В этой ситуации сервер не может узнать, что его убивают.Это приведет к разрыву существующих соединений.
Если, закрывая приложение, вы предоставляете системному администратору возможность вручную закрыть сервер (возможно, набрав «exit» на консоли сервера).Тогда событие закрытия будет пользовательским событием, и вам придется запрограммировать прослушиватели и уведомить всех о завершении работы сервера.В данном случае это возможно.
Попробуйте добавить более подробную информацию о том, как устроен ваш сервер и как он работает.