我编写了一个小 TCP 线程服务器,它为每个 server.accept() 创建一个新线程。几乎一切都很好,但我在每次中断时杀死所有线程时遇到问题。(我使用 ServiceExecutor 来管理线程。因此我使用 shutdownNow 方法来访问中断方法) Worker 实例使用 BufferedReader 并且它是 readline 方法来接收和计算输入。AFAIK readline 阻塞并且不会对中断做出反应,但是如何停止呢?
while(!isInterrupted()){
try {
clientSocket = this.serverSocket.accept();
} catch(IOException e){
break;
}
this.threadPool.execute(new ThreadWorker(clientSocket));
}
threadPool.shutdownNow();
try{
serverSocket.close();
}catch(IOException e){
//todo
}
我试图关闭 ServerSocket 以终止输入/输出流,但它没有按预期工作。