Мы хотим отключить наших клиентов с сервера.java Рекомендуемый способ отключения нескольких сеансов пользователя
Итак мы послали несколько сообщений сессий, которые включают в себя в основном некоторые команды, как «закрыть себя» л
Так что в целом я сделать что-то вроде этого:
for (Session session : sessions) {
closeSession(session);
while(!verifyClosed(session)){
closeSession(session);
retries++;
if(retries==10){
retries = 0;
break;
}
};
}
Теперь я хотел бы дайте несколько секунд (скажем, 5), чтобы каждый сеанс закрывался, прежде чем выполнять некоторые методы kill sigterm.
Так что было бы предпочтительным способом:
Выполнение цикла с максимальной задержкой 5 секунд для каждого закрытия сессии процедуры.
ИЛИ
Start для каждой сессии поток, который делает эту процедуру так, сеансы должны быть закрыты одновременно.
for (Session session : sessions) { startClosingThread(session); }
Update:
Я заметил, что некоторые пользователи falsly повесили много на слово "Session", проблема не SessionHandling вообще. Если я отправляю закрывающее сообщение или отсоединяю Socket, это не имеет значения. Это не проблема.
Вы можете заменить слово Session на UserThread.
Проблема в том, что мне нужно знать: Закрытие «UserThread» займет некоторое время, поэтому теперь подождите, пока каждый поток будет закрыт, и перейдите к следующему, или запустите для каждого UserThread свое собственное ответное закрытие Поток для работы со всеми нитями одновременно.
Вы можете просто добавить все сеансы в коллекции или очереди, а затем периодически проходить через него, отправляя команды закрытия каждой сессии. Если какой-то сеанс не удалось закрыть - добавьте его обратно в коллекцию. Делайте это до тех пор, пока коллекция не станет пустой или превысит лимит повтора. –
'' sigterm' убить методы ', чтобы убить что? Что такое «сеанс пользователя» в этом сценарии? Что случилось с закрытием сокета? – EJP
Отправляет команду закрытия операцию блокировки или неблокирования? Какое соединение у вас есть на сеансах, которые вы можете выполнить с помощью метода sigterm kill? – Alexander