在 AsyncHttpClient JDKFuture.get()
public V [More ...] get(long timeout, TimeUnit unit) {
V content = null;
try {
if (innerFuture != null) {
content = innerFuture.get(timeout, unit);
}
} catch (TimeoutException t) {
if (!contentProcessed.get() && timeout != -1 &&
((System.currentTimeMillis() - touch.get()) <= responseTimeoutInMs)) {
return get(timeout, unit);
}
为什么我们有 2 次超时?
1. timeout as param
2. responseTimeoutInMs
第二次超时伤害了我们,因为即使在超时到期后呼叫也不会出现。它不断递归地再次调用 get()。
一旦 responseTimeoutInMs 被击中,连接会关闭吗?我们正在尝试将其设置为低于超时。