В Прерываемая библиотека RMI предусмотрен механизм прерывания вызовов RMI.Обычно, когда поток вызывает метод RMI, поток блокируется, пока метод RMI не вернется.Если вызов метода занимает слишком много времени (например, если сервер RMI занят или зависает, или если пользователь хочет отменить операцию RMI), нет простого способа прервать блокирующий вызов RMI и вернуть управление потоку RMI.,Библиотека прерывистого RMI обеспечивает эту функциональность.
Библиотека состоит из двух ключевых компонентов: RMISocketFactory и ThreadFactory.Вызовы RMI, сделанные в потоке из предоставленного ThreadFactory к интерфейсу RMI с использованием сокетов из RMISocketFactory, могут быть прерваны путем вызова Thread # interrupt () в потоке клиента.Так что это действительно удобно.Но обратите внимание также на стороне сервера, что вы можете добавить вызов к удобному служебному методу, чтобы убедиться, что текущий поток не является "зомби" или потерянным потоком, который уже был "прерван" клиентом.
Программная остановка сервера RMI:
Серверы RMI запускают поток, который никогда не заканчивается.Это делается для того, чтобы сервер был постоянным до тех пор, пока не будет выключен вручную.Однако вы можете предоставить удаленный метод shutDown()
для Удаленного сервера.Этот метод запускает поток завершения.Поток завершения остается в ожидании notify().
Когда Сервер заканчивает всю обработку очистки, он запускает поток завершения.
Поток завершения после двух (2) секундной задержки вызывает System.exit(0)
дляконец виртуальной машины Java.Задержка заключается в том, что сообщения от Сервера инициирующему Клиенту завершают путешествие.