任何人都可以指向我的一些文档,明确表示'Future.get`超时为0不会等待?future.get的行为与0超时
的API文档未明确future.get(0, unit)
的行为。声称“在最多特定时间等待,如果必要的话......”意味着这种调用不会等待,但考虑到长期以来的行为(无限等待),我很紧张依赖于对future.get(0, unit)
“不等待”的行为扫描一些JDK提供的类(即FutureTask
)我看到,当超时为0
我的Future
这个特定的实现不等待的源d喜欢能说
long timeout = Math.max(until - now, 0);
return future.get(timeout, TimeUnit.MILLISECONDS);
但我对一个未来感到紧张实施根据无限等待,所以反而,我已经明确地编码它,我希望它的工作方式:
long timeout = Math.max(until - now, 0);
if(timeout > 0 || future.isDone()){
return future.get(timeout, TimeUnit.MILLISECONDS);
} else {
throw TimeoutException();
}
@skaffman感谢标签修复。 – mwhidden 2012-02-17 18:05:45