que tienen un hilo servidor con este código:¿Cómo desbloquear un hilo bloqueado en 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);
}
}
y un método de apagado como esto:
public void shutdown() {
EneaLog.printLog("Server shutdown NOW!");
stopped = true;
}
Quiero que el cierre puede desbloquear hilo que están esperando en server.accept() de lo contrario, debe esperar la conexión antes del cierre del servidor.
No puedo hacer server.close() en shutdown() porque debo indicarle al cliente registrado que el servidor está bajando.
¿Alguna idea?
mmm buena respuesta .. Tal vez puedo cambiar el enfoque a un problema. Administro el cierre del servidor en el lado del cliente con try-catch. –