I'm writing a basic server in java. I have a Server class that waits for requests:
class Server{
public void listen(){
ServerSocket listenSocket = new ServerSocket(port);
while(true){
Socket clientSocket = listenSocket.accept();
// start new thread for the connection
new Connection(clientSocket, this).start();
}
}
public void save(){
//save stuff
}
}
I added a ShutdownHook to the program so it can save it's data on shutdown. My main looks like this:
Server server = new Server();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
server.save();
}
}));
server.listen();
But the ShutdownHook fires only if I delete server.listen(); (when it's not in while(true)). Is there a way to save the server's data on exit?