Ho un thread del server con questo codice:Come sbloccare un thread bloccato su ServerSocket.accept()?
public void run() {
try {
ServerSocket server;
EneaLog.printLog("Server is running.");
server = new ServerSocket(this.portnumber);
while (true) {
new EneaServerConnection(server.accept(), this.project,stopped).start();
if (stopped) {
EneaLog.printLog("Server safe-shutdown completed.");
EneaLog.printLog("Hi!");
server.close();
return;
}
}
} catch (IOException ex) {
Logger.getLogger(EneaServer.class.getName()).log(Level.SEVERE, null, ex);
project.getExceptionHandler().handler(ex);
}
}
e un metodo di arresto come questo:
public void shutdown() {
EneaLog.printLog("Server shutdown NOW!");
stopped = true;
}
voglio che shutdown può sbloccare filo che sono in attesa sulla server.accept() altrimenti deve attendere la connessione prima dello spegnimento del server.
Non riesco a fare server.close() in shutdown() perché devo segnalare al client registrato che il server sta scendendo.
Qualche idea?
mmm buona risposta .. Forse cambio approccio al problema. Gestisco l'arresto del server sul lato client con try-catch. –