我有一个作为 Java SwingWorker 运行的 Socket 服务器。
SwingWorker 接收传入的连接,并在连接后将套接字移交给负责连接的 Executor。Executor 调用一个 SocketHandler,它将通过 run() 方法处理套接字。
现在,我在 GUI 上有一个按钮,上面写着停止。当我按下停止按钮时,我想停止 SwingWorker 的执行。为此,我在按下停止按钮时调用了一个 cancel(true) 方法。
现在,尽管我的程序调用了 cancel(true) 方法,SocketHandler 仍继续接收传入数据。这里发生了什么?
我已经阅读了几篇文章,这是 JDK 中的一个错误,即调用 cancel(true) 方法不会停止 SwingWorker。这是真的?