gpt4 book ai didi

java - 取消被 Socket.Accept() 阻止的 SwingWorker?

转载 作者:行者123 更新时间:2023-12-01 18:27:09 25 4
gpt4 key购买 nike

我有一个 SwingWorker,它打开一个 ServerSocket,然后在服务器套接字上调用 .accept()。大多数时候,线程在调用 accept() 时阻塞。在某些时候我想取消线程。问题是工作线程因调用 accept() 而被阻塞。是否有一种机制可以“解除阻止”此调用并调用一些关闭代码?

目前,我正在调用 mySwingWorker.cancel(true) 并使用 PropertychangeListener 监听属性更改。当它被触发时,我会检查 DONE 状态,然后在尝试调用 mySwingworker.get() 时检查 CancellationException

奇怪的是,即使在捕获 CancellationException 后,我仍然可以连接到工作人员打开的套接字。

最佳答案

关闭ServerSocket。这将解锁accept(),但会出现异常。

如果您想要一个更清晰的解决方案,请设置一个 boolean 值,将 Socket 连接到监听端口,并让您的accept()循环在每次接受连接时检查该 boolean 值。

或者,设置一个accept()超时,设置一个 boolean 值,然后让accept()循环在每次超时时检查 boolean 值。

关于java - 取消被 Socket.Accept() 阻止的 SwingWorker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25653932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com