У меня есть приложение, которое прослушивает входящие соединения на указанном имени хоста и порту. Прослушивание вызывается с помощью метода listen()
(см. ниже), который постоянно ожидает входящего соединения с помощью ServerSocket.accept()
, создавая новый Thread
для обработки входного потока.
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();
}
Теперь я хочу остановить запуск listenerThread
. Но когда я вызываю this.listenerThread.interrupt()
, это не работает.
Я думал, что поток можно остановить, прервав его, так почему же это не работает?
(Примечание: возможное решение — закрыть ServerSocket
с помощью this.serverSocket.close()
, но можно ли это сделать с помощью interrupt()
или чего-то еще?)