Java - обрабатывать завершение программы - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть пара сервер-клиент, написанная на Java, и я хотел бы выйти из одного приложения, если из другого вышло. Как это сделать? Я также хотел бы знать, как заставить программу выполнять последовательность команд (например, закрывать сокеты и т. Д.), Если пользователь выходит из приложения вручную (т. Е. Нажимая cmd + q.alt + F4 и т. Д.)

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Когда один выходит, он отправляет сообщение другому, что заставляет его выйти.

Одним из подходов является сообщение / объект «Ядовитая таблетка», вызывающее отключение приемника при достижении этого сообщения.

1 голос
/ 25 ноября 2011

Обычно способ сделать это состоит в том, чтобы поток сердцебиения работал отдельно.Это работает следующим образом:

  1. Каждый клиент запускает поток пульса и периодически отправляет серверу сообщение, в котором говорится, что «я запущен».Вы можете настроить время между сообщениями согласно вашему требованию.

  2. Сервер запускает поток прослушивания пульса и будет вести список клиентов, работающих

  3. Как только все клиенты прекратят отправлять сообщение, сервер может ждатьпару минут, а затем изящно завершите работу.

Этот дизайн может работать для одного или нескольких клиентов.

...