Dru*_*nix 2 java specifications java.util.concurrent
提供否定超时是否安全java.util.concurrent.Future.get(long, TimeUnit)?文件说
如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用).
这是否意味着它将与负值一起使用,或者此陈述是否仅涵盖非负面案例?我期望的行为是返回结果(如果可用)或立即超时.如果我们想要计算绝对时间点的超时并且已经过去,则可能发生这种情况.我当然可以使用max{timeout, 0},但这真的有必要吗?在我的环境中进行的测试表明它有效,但这有保证吗?/sf/ask/653303311/表明这应该是0超时的情况.
或者换句话说:假设结果Future可用.Future如果一个实现是不合规的,如果get(long, TimeUnit)使用否定超时调用会比返回此结果还要做其他事情吗?
一段时间不可能"等待"; 唯一的理论保证是等待时间不低于某个数字.这实际上是在JLS中指定的.因此,措辞必须如下:
设t是给定的等待时间,让你成为该方法在将控制权返回给调用者之前实际花费的时间.当且仅当u < t时,方法调用的返回值保证为Future的返回值.
鉴于上述情况,负t完全按顺序排列,所有值<= 0应该完全相同.
尽管如此,一个实现可能会在一个负面的等待时间内抛出一个例外,并且这样做有一个弱的借口.如果您的代码由于此类异常而失败,您可能会与所述Future实现的作者展开激烈的争议.如果发生这种情况,Stack Overflow实际上没有任何答案可以防止它.
如果您随后到法院解决损害赔偿责任,并对此类诉讼的结果感兴趣,那么我认为这种担忧超出了Stack Overflow的范围.
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |