3

server.accept() ごとに新しいスレッドを作成する小さな TCP スレッド サーバーをコーディングしました。ほとんどすべてがうまく機能しますが、割り込みごとにすべてのスレッドを強制終了するのに問題があります。(私は ServiceExecutor を使用してスレッドを管理します。したがって、shutdownNow メソッドを使用して割り込みメソッドに到達します) Worker インスタンスは BufferedReader を使用し、readline メソッドを使用して入力を受け取り、計算します。私の知る限り、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 を閉じようとしましたが、期待どおりに動作しませんでした。

4

1 に答える 1