gpt4 book ai didi

java - 是否可以使java方法超时?

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:39 26 4
gpt4 key购买 nike

我需要执行 ping 网络服务来检查我是否连接到端点以及网络服务服务器是否一切正常。

这有点蠢,但我必须为此调用网络服务。问题是,当我调用 stub.ping(request) 并且我没有连接时,它一直尝试执行此代码大约一分钟...然后返回 false。

如果无法 ping,有什么方法可以在 1 秒后超时?

public boolean ping() {
try {
PingServiceStub stub = new PingServiceStub(soapGWEndpoint);
ReqPing request = new ReqPing();

UserInfo userInfo = new UserInfo();
userInfo.setName(soapGWUser);
userInfo.setPassword(soapGWPassword);
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.setConfigurationName(soapGWAppName);

stub.ping(request);

return true;
} catch (RemoteException | PingFault e) {
return false;
}
}

最佳答案

你可以使用类似 TimeLimiter 的东西来自谷歌 Guava 图书馆。这允许您将可调用对象包装在可以使用 Timeout 调用的操作中。如果可调用对象没有及时完成操作,它将抛出一个 TimeoutException,您可以在一秒后捕获并返回 false。

举个例子:

TimeLimiter timeLimiter = new SimpleTimeLimiter();
try {
String result = timeLimiter.callWithTimeout(
() -> callToPing(), 1, TimeUnit.SECONDS);
return true // Or something based on result
} catch (TimeoutException e) {
return false
}

关于java - 是否可以使java方法超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56115161/

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