I have an app that listens to incoming connections on a specified hostname and port. The listening is invoked with the method listen()
(see below), which waits constantly for an incoming connection using ServerSocket.accept()
, creating a new Thread
to handle the input stream.
private ServerSocket serverSocket;
private Thread listenerThread;
public void listen() throws IOException {
this.listenerThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Socket socket = TheServerClass.this.serverSocket.accept();
// Create new thread to handle the incoming connection
}
catch (IOException exc) { }
}
}
});
this.listenerThread.start();
}
Now I want to stop the running of listenerThread
. But when I call this.listenerThread.interrupt()
, this doesn't work.
I thought you can stop a thread by interrupting it, so why isn't that working?
(Notice: A possible solution is to close the ServerSocket
using this.serverSocket.close()
, but can it be accomplished with interrupt()
or something?)