围绕Java操作应用超时控制

Jon*_*ram 16 java timeout

我正在使用第三方Java库与REST API进行交互.REST API有时需要很长时间才能响应,最终导致java.net.ConnectException被抛出.

我想缩短超时时间,但无法修改第三方库.

我想在调用Java方法时应用某种形式的超时控制,以便我可以确定在什么时候放弃等待.

这与网络超时无直接关系.我希望能够尝试执行操作,并能够在指定的等待时间后放弃.

以下绝不是有效的Java,但在概念上证明了我想要实现的目标:

try {
    Entity entity = new Entity();
    entity.methodThatMakesUseOfRestApi();
} catch (<it's been ages now, I don't want to wait any longer>) {
    throw TimeoutException();
}
Run Code Online (Sandbox Code Playgroud)

min*_*das 15

我推荐Google Guava库中的TimeLimiter.