繁体   English   中英

如何知道 java.util.concurrent 未来接口是否仍然有效?

[英]How to know if java.util.concurrent Future Interface is still valid?

在我的应用程序中,我使用“提交(可调用任务)”方法将任务添加到“ScheduledThreadPoolExecutor”。 该方法返回一个“未来”,我在另一个线程中评估其结果。 但是这个线程运行其他代码,执行“Future.get()”可能需要一段时间。

我发现 C ++ 提供了一个“future::valid” function 来检查“future::get”返回的值是否仍然有效。 但是 Java 既没有提供方法也没有提供表明“Future.get()”是否不再有效的异常(如果垃圾收集器已经从“ScheduledThreadPoolExecutor”队列中移除了相应的任务)。

建议做什么? 我是否应该尝试从读取线程中删除任务的 rest 并使其尽快等待“Future.get()”?

Java 不是 C++。 只要您有对所述变量的引用并且不会被垃圾收集器收集, Future.get()就是“有效的”。

请注意,如果线程尚未完成执行, Future.get()将阻塞。 如果你需要在没有阻塞的情况下检查结果是否准备好, Future提供了.isDone()方法。

暂无
暂无

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

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