Ich habe einen Server-Thread mit diesem Code:
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);
}
}
und eine Abschaltmethode wie diese:
public void shutdown() {
EneaLog.printLog("Server shutdown NOW!");
stopped = true;
}
Ich möchte, dass Shutdown Thread freigeben kann, die auf server.accept() warten, sonst muss ich für die Verbindung vor dem Server-Shutdown warten.
Ich kann server.close() in shutdown() nicht ausführen, weil ich dem registrierten Client signalisieren muss, dass der Server heruntergefahren wird.
Irgendwelche Ideen?