gpt4 book ai didi

java - 获得 Future 对象的进度的能力

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:45 25 4
gpt4 key购买 nike

关于 java.util.concurrent 包和 Future 接口(interface),我注意到(除非我弄错了)只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度。

这引出了以下问题:

有没有办法在非 GUI、非 Swing 应用程序(想象一个控制台应用程序)中在后台启动一个冗长的任务并允许其他线程检查进度?在我看来,没有理由将此功能限制在 swing/GUI 应用程序中。否则,在我看来,唯一可用的选项是通过 ExecutorService::submit 返回一个 Future 对象。但是,基础 Future 接口(interface)不允许监控进度。

最佳答案

显然,Future 对象只适用于阻塞然后接收结果。

您提交的 Runnable 或 Callable 对象必须知道如何提供此进度(完成百分比、尝试次数、状态(枚举?)等)并将其作为对对象本身的 API 调用提供,或发布在某些查找资源中(如有必要,在内存映射或数据库中)。为简单起见,我倾向于喜欢对象本身,尤其是因为您很可能需要句柄 (id) 来查找对象或对对象本身的引用。

这确实意味着您有 3 个线程在运行。 1 个用于实际工作,1 个用于等待结果,1 个用于监视线程。最后一个可以根据您的要求共享。

关于java - 获得 Future<T> 对象的进度的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275816/

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