I'm writing a client/server application in Java using sockets. In the server, I have a thread that accepts client connections, this thread runs indefinitely. At some point in my application, I want to stop accepting client connection, so I guess destroying that thread is the only way. Can anybody tell me how to destroy a thread?
Here's my code:
class ClientConnectionThread implements Runnable {
    @Override
    public void run() {
        try {
            // Set up a server to listen at port 2901
            server = new ServerSocket(2901);
            // Keep on running and accept client connections
            while(true) {
                // Wait for a client to connect
                Socket client = server.accept();
                addClient(client.getInetAddress().getHostName(), client);
                // Start a new client reader thread for that socket
                new Thread(new ClientReaderThread(client)).start();
            }
        } catch (IOException e) {
            showError("Could not set up server on port 2901. Application will terminate now.");
            System.exit(0);
        }
    }
}
As you can see, I have an infinite loop while(true) in there, so this thread will never stop unless somehow I stop it.
 
     
    