gpt4 book ai didi

Java 取消 Future - 如何等待完成?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:40 26 4
gpt4 key购买 nike

长话短说:我有一组 Future 对象。其中有些已经在进行中,有些还没有。我迭代集合并调用 future.cancel(false),根据文档,它应该取消所有当前未运行但应该允许所有其他的 Future完成。

我的问题是:在调用 future.cancel(false) 之后,我如何知道特定的 Future 何时完成? future.isDone() 总是返回 true 因为 cancel() 确实在此之前被调用过并且 future.get() 始终抛出 CancellationException,即使 Future 仍在运行。

有什么建议吗?

最佳答案

由于 Future 对未决计算的 future 结果进行建模,并且由于该结果不是来自已取消的 future ,因此 Future 让您无法找出结果已被处理的计算何时完成。换句话说,您需要另一种范例来使用该方法实现您的目标。

如果您希望等待所有提交的任务完成,Executor Service API 直接支持的最接近的事情是关闭整个执行程序服务并等待其终止。

如果以上不适合您的解决方案,那么我认为没有比某些自定义解决方案更好的方法了,例如 Runnable 的自定义实现,它会在侧面进行一些内务处理,因此您可以检查它何时完成运行。

关于Java 取消 Future - 如何等待完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com