加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:45:05 所属栏目:Java 来源:网络整理
导读:参考 java.util.concurrent包和Future接口,我注意到(除非我是错误的),启动漫长的任务并能够对进度进行查询的功能只能与SwingWorker实现类一起使用. 这就产生了以下问题: 有没有一种方法,在非GUI,非Swing应用程序(成像控制台应用程序)中,在后台启动漫长的任
参考 java.util.concurrent包和Future接口,我注意到(除非我是错误的),启动漫长的任务并能够对进度进行查询的功能只能与SwingWorker实现类一起使用.

这就产生了以下问题:

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读