繁体   English   中英

未来导致无限循环

[英]Future causing an infinite loop

我有看起来像这样的Java代码......

package java.uyil.concurrent;
...


Future<> future= ...;
try {
    while(!future.isDone()) {
    }
}catch(Exception e) {
}

基本上,代码应该运行那个 while 循环,直到未来的任务完成。 出于某种原因,此代码在一个用户的 PC 上失败,并且循环似乎永远持续下去。 在其他电脑上运行正常。

我是否遗漏了什么,是否有人知道线程和未来任务足以提供帮助?

所以你想阻塞流,直到你从未来得到结果。 你不需要使用 while 循环,而是直接使用future.get() ,它会阻塞直到你得到结果。

如果在 Future 开始之前取消它,它将永远不会到达isDone() == true

来自 Future.isDone() 的 Javadoc

@return {@code true} 如果此任务完成

如果你不想使用Future.get()你可以做

while(!future.isDone() && !future.isCancelled()) {
    Thread.yield();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM