java – 在Future对象上获得进度的能力

前端之家收集整理的这篇文章主要介绍了java – 在Future对象上获得进度的能力前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参考 java.util.concurrent包和Future接口,我注意到(除非我是错误的),启动漫长的任务并能够对进度进行查询功能只能与SwingWorker实现类一起使用.

这就产生了以下问题:

有没有一种方法,在非GUI,非Swing应用程序(成像控制台应用程序)中,在后台启动漫长的任务,并允许其他线程检查进度?在我看来,没有理由将这种能力限制在swing / GUI应用程序中.否则,唯一可用的选项,我看到的方式是通过ExecutorService :: submit,它返回一个Future对象.但是,“未来”界面不允许监视进度.

解决方法

显然,未来的对象只会阻挡并接收结果.

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

这的确意味着你有3个线程操作. 1为实际工作,1为等待结果时被阻塞,1为监视线程.最后一个可以根据您的要求共享.

原文链接:https://www.f2er.com/java/124451.html

猜你在找的Java相关文章