Java SwingWorker として実行されているソケット サーバーを取得しました。
SwingWorker は着信接続を受信し、接続時に、接続を処理する Executor にソケットを渡します。Executor は、run() メソッドを介してソケットを処理する SocketHandler を呼び出します。
これで、GUI に停止というボタンが 1 つあります。停止ボタンを押したときに SwingWorker の実行を停止したい。そのために、Stop ボタンを押したときに呼び出される cancel(true) メソッドを用意しました。
現在、プログラムが cancel(true) メソッドを呼び出しているにもかかわらず、SocketHandler は受信データを受信し続けています。何が起きてる?
cancel(true) メソッドを呼び出しても SwingWorker が停止しないのは JDK 内のバグであるといういくつかの記事を読みました。これは本当ですか?