gpt4 book ai didi

java - Swingworker超时

转载 作者:搜寻专家 更新时间:2023-11-01 02:53:18 25 4
gpt4 key购买 nike

我正在使用 SwingWorker 通过 TCP 连接读取数据并在数据返回时显示。

new SwingWorker<EnvInfoProto, Void>() {
@Override
public EnvInfoProto doInBackground() {
try {
xxx.writeTo(socket.getOutputStream());
return ProtoMsg.parseFrom(socket.getInputStream());
} catch(IOException ignore) { }
return null;
}

@Override
public void done() {
try {
UpdateGui(get());
} catch (Exception ignore) {}
}
}.execute();

问题出现在套接字死机时,例如在 writeTo 之后,它永远等待套接字上的输入。一段时间后超时的最简单方法是什么?是this在这种情况下也是最好的解决方案吗?我还会在该解决方案中使用 swingworker 吗?

谢谢

最佳答案

是的,您链接到的解决方案是一个合理且简单的解决方案(“最佳”是如此主观 :) 您可以利用 SwingWorker#get ,这是 Future 接口(interface)的一部分:

SwingWorker<EnvInfoProto, Void> worker = new SwingWorker<EnvInfoProto, Void>() {
...
};
worker.execute();
worker.get(15, TimeUnit.SECONDS);
//will block 15 seconds at most, then throw TimeoutException

当然,您可以想出不同的方法来实现您的目标,但我敢打赌,涉及的代码比此解决方案更多,所以我会试一试。

关于java - Swingworker超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042186/

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