Как обработать событие закрытия приложения в Java?

StackOverflow https://stackoverflow.com/questions/750026

  •  09-09-2019
  •  | 
  •  

Вопрос

Имея консольное приложение, сервер, принимающий несколько подключений от клиентов, возможно ли наличие прослушивателя или события на закрывающемся приложении?В этом случае я хочу сказать всем подключенным клиентам аккуратно отключиться, прежде чем приложение действительно закроется.

Есть решение?Спасибо!

Это было полезно?

Решение

Вы хотите использовать перехватчик завершения работы:

Runtime.getRuntime().addShutdownHook(theHookThread);

Таким образом, поток будет запущен после завершения работы JVM, см. здесь для получения подробной информации.

Другие советы

Если под закрытием приложения вы имеете в виду, что операционная система убивает серверный процесс?

В этой ситуации сервер не может узнать, что его убивают.Это приведет к разрыву существующих соединений.

Если, закрывая приложение, вы предоставляете системному администратору возможность вручную закрыть сервер (возможно, набрав «exit» на консоли сервера).Тогда событие закрытия будет пользовательским событием, и вам придется запрограммировать прослушиватели и уведомить всех о завершении работы сервера.В данном случае это возможно.

Попробуйте добавить более подробную информацию о том, как устроен ваш сервер и как он работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top