gpt4 book ai didi

Java - 如何测量超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:48 26 4
gpt4 key购买 nike

我正在使用 Java 套接字制作一个 ping 程序。我的程序中的一个错误是有时它不会连接并且永远停在那里。所以我试图添加一个超时(二十秒后)并且 ping 将失败。但我不知道该怎么做。

这是我的 ping 程序的一部分:

boolean result = false;
long before1 = System.nanoTime();
out.println(new byte[64]);
System.out.println("(1) Sent 64 bytes of data to " + address
+ "...");
try {
if ((in.readLine()) != null) {
int size = in.readLine().toString().getBytes().length;
long after = System.nanoTime();
long s = ((after - before1) / 1000000L) / 1000;
System.out.println("(1) Recieved reply from " + address
+ " (" + size + " bytes), time = " + s
+ " seconds...");
result = true;
} else if ((in.readLine()) == null) {
long after = System.nanoTime();
long s = ((after - before1) / 1000000L) / 1000;
System.out.println("(1) Failed to recieve reply from "
+ address + ", time = " + s + " seconds...");
result = false;
}

} catch (IOException exc) {

long after = System.nanoTime();
long s = ((after - before1) / 1000000L) / 1000;
System.err.println("(1) Failed to recieve reply from "
+ address + ", time = " + s + " seconds...\nReason: "
+ exc);
result = false;

}

但我想在我的代码中的任何地方测量耗时,而不是:

long time = System.nanoTime();

如果我的代码的一部分在执行某项操作时卡住,它将在 20 秒后超时。
关于如何衡量在 try/catch block 开始时或我的代码中的其他任何地方是否已经过了 20 秒,以便它不会在 ping 期间卡住,有什么建议吗?

最佳答案

正如“jsn”和“jahory”所说,你需要用线程来做这件事。这里有 2 个有用的链接,您可以查看它们 ;)

关于Java - 如何测量超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842745/

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