0

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?

0 Answers0