[英]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.