ソケットを使用して Java でクライアント/サーバー アプリケーションを作成しています。サーバーには、クライアント接続を受け入れるスレッドがあり、このスレッドは無期限に実行されます。アプリケーションのある時点で、クライアント接続の受け入れを停止したいので、そのスレッドを破棄することが唯一の方法だと思います。スレッドを破棄する方法を誰か教えてもらえますか?
これが私のコードです:
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);
}
}
}
ご覧のとおり、そこに while(true) という無限ループがあるため、このスレッドは、何らかの方法で停止しない限り停止しません。