Vogliamo disconnettere i nostri client dal server.java modo consigliato per arrestare più sessioni utente
così abbiamo inviato alcuni messaggi alle sessioni, che includono fondamentalmente alcuni comandi come "chiudere te" l
Quindi, in generale che faccio qualcosa di simile:
for (Session session : sessions) {
closeSession(session);
while(!verifyClosed(session)){
closeSession(session);
retries++;
if(retries==10){
retries = 0;
break;
}
};
}
Ora vorrei dare qualche secondo (diciamo 5) per ogni sessione per chiudersi prima di eseguire alcuni metodi di kill sigterm.
Quindi, quale sarebbe il modo preferito:
Facendo il ciclo con un massimo di 5 secondi di ritardo per ogni stretta procedura di sessione.
O
avvio per ogni sessione un filo che fa questo procedimento così le sessioni devono essere chiusi contemporaneamente.
for (Session session : sessions) { startClosingThread(session); }
Aggiornamento:
Ho notato che alcuni utenti falsly appeso a molto sulla parola "Session", il problema non è la SessionHandling a tutti. Se invio un messaggio di chiusura o disconnetto lo zoccolo non ha importanza. Questo non è il problema.
È possibile sostituire la parola Sessione con UserThread.
Il problema per quello che ho bisogno di un consiglio è: La chiusura di un "UserThread" richiederà del tempo, quindi ora attendi che ogni thread sia chiuso e passi a quello successivo, o inizi per ogni UserThread il proprio ripetibile Closing Thread per lavorare su tutti i thread contemporaneamente.
È possibile aggiungere semplicemente tutte le sessioni in entrata o in coda, quindi attraversarlo periodicamente, inviando comandi di chiusura a ciascuna sessione. Se qualche sessione non è riuscita a chiuderla, aggiungila nuovamente nella raccolta. Fallo finché la raccolta non è vuota o il limite dei tentativi supera. –
"metodi di uccisione sigterm' per uccidere cosa? Che cos'è una "sessione utente" in questo scenario? Cosa c'è che non va semplicemente chiudendo la presa? – EJP
L'invio del comando di chiusura è un'operazione di blocco o non bloccante? Che tipo di connessione hai alle sessioni che puoi fare un metodo di uccisione sigterm? – Alexander