Buongiorno a tutti

Avrei una domanda:

E' possibile determinare lato server se un client si è disconnesso ???

Ho gestito le connessioni socket lato server in multithread in questo modo:

codice:
try {
    ServerSocket server = new ServerSocket(33333);
        
    // ciclo infinito, in attesa di connessioni
    while(true){
    // chiamata bloccante, in attesa di una nuova connessione
    Socket client = server.accept();
                
    // la nuova richiesta viene gestita da un thread indipendente, si ripete il ciclo
    LogicServer newClientConnection = new LogicServer (client);
    }


}catch(Exception e){
       e.printStackTrace();
}



//Nella classe LogicServer invece

public class LogicServer extends Thread
{
    // dichiarazione delle variabili socket e dei buffer
    Socket client;
    BufferedReader in;
    PrintWriter out;
    
    public LogicServer (Socket client)
    {
        this.client = client;
        
        // invoca automaticamente il metodo run()
        this.start();
    }
    
    public void run()
    {
        try
        {
            // inizializza i buffer in entrata e uscita
             ........

      while(true)

             ........
IL thread che poi gestisce la connessione (LogicServer) e che esegue una logica, presenta come si evince dal codice un while(true) questo perché non deve chiudere la connessione socket ad ogni richiesta ma restare sempre attivo perché è mia esigenza che mandi messaggi in continuazione verso il client.

Il Problema è: inutile tenere thread aperti se poi i client sono disconnessi. Ovviamente essendo presente il while(true) i mio thread risulta sempre attivo. Il mio obbiettivo è far morire il thread uscendo dal ciclo while, non appena viene rilevata una disconnessione lato client.

E' possibile fare una cosa del genere ???
Grazie a tutti