如何报告后台任务的进度?

2024-03-19

我有一个长时间运行的任务,正在 ExecutorService 线程池的后台执行。就该任务返回进度或中间结果而言,有哪些最佳实践?有没有提供此功能的库?

编辑:为了澄清,我正在谈论向其他代码报告进度,而不是向用户报告进度。

通常我会使用 SwingWorker,但我正在使用 Grails 应用程序的 Java/Groovy 后端,并且我不确定它在无头服务器环境中的表现如何,因为它具有 EDT 关系。

另一个例子是 Eclipse RCP 中的 Jobs 框架,但我需要一些与 UI 无关的东西。


嘿,您可以尝试实现观察者模式,并让感兴趣的各方订阅工作线程(java.util.Observable 或类似的扩展)或管理观察者的另一个类。

您可以使用 java.util.Observer 和 java.util.Observable 或者自己动手。

实现观察者模式的一些接口的简单示例:

public interface ObservableSubject<T extends SubjectObserver, V> {

   void registerObserver(T observer);

   void removeObserver(T observer);

   void notifyObservers(V notificationPayload); 

}


public interface SubjectObserver<T> {

   void handleNotification(T notificationPayload);
}

更多信息:维基百科上的观察者模式 http://en.wikipedia.org/wiki/Observer_pattern

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何报告后台任务的进度? 的相关文章

随机推荐

  • matplotlib.rc 和 matplotlib.pyplot.rc 有什么区别?

    据我所知 在 matplotlib 中 您可以使用 rc 或 rcParams 来自定义绘图的样式 但是 这些函数似乎存在于两个级别 例如 matplotlib rc 与 matplotlib pyplot rc 或 matplotlib
  • 在 jQuery 中获取鼠标滚轮事件?

    有没有办法获取鼠标滚轮事件 不讲scroll事件 在 jQuery 中 document ready function foo bind mousewheel function e if e originalEvent wheelDelta
  • 如何使用QMake的子目录模板?

    我开始学习Qt 我即将离开 Visual Studio 世界 正在寻找一种使用 QMake 组织项目结构的方法 我找到了 子目录 模板 但我很难理解它 我的项目结构如下所示 project dir main cpp project pro
  • 如何将 Room 数据库导出为 .db 以下载文件以便稍后使用?

    如何将 Room 数据库导出到 db 文件以便稍后使用 我想将其导出到 Android 设备存储中的下载文件夹 我已经设置导出到 CSV 但现在我需要导出到 db 这样 如果用户正在切换设备并且需要其他设备上的数据 我可以重新导入它 有没有
  • 排毒笑话测试不是并行运行的

    使用 Jest 实现自动化排毒 您好 我正在使用以下命令从 CLI 运行排毒测试 detox test r maxWorkers 2 实现并行执行 已经有一个模拟器以名称 iphone 5s Detox 启动 并以 maxWorkers 2
  • 标签可以在 git filter-branch 和 rebase 之后自动移动吗?

    edit问题归结为 可以git rebase也被指示对标签进行变基吗 但是对最初问题的回答也会有所帮助 Asking 如何将过去添加到 git 存储库中 https stackoverflow com questions 3147097 h
  • Word 和 Python - 创建目录

    我正在使用 python 的 pywin32 client 扩展并构建 Word 文档 我尝试了很多很好的方法来生成目录 但都失败了 我认为我想要做的是调用 ActiveDocument 对象并使用 MSDN 页面中的以下示例创建一个对象
  • Yii ,从 $_FILES 保存图像,但不使用模型

    这可能吗 这是有模型的 CUploadedFile getInstance model newsimage model gt image gt saveAs image path 但我不想创建模型只是为了保存我的图像 我实际上需要这个的目的
  • 保存的位图是黑色的

    我创建了一个带有文本的位图 我可以在图像视图中查看它 但是当我保存位图时 我只得到一个黑色图像 我花了三个小时研究类似的问题 但没有一个对我有用 这是代码 谢谢你的帮助 public void createBitmap Bitmap Lab
  • 使用中间服务器创建点对点连接

    我想连接两个客户端 通过 TCP IP 套接字 客户端可以使用中间服务器发现彼此 一旦客户端发现彼此 服务器就不应该有任何参与 我对此做了一些研究 发现很多人建议JXTA 但我想自己从头开始创建协议 因为将来我可能也必须使用 WebSock
  • 如何通过存储在字符串变量中的名称获取 XAML 元素?

    例如 我有一个 UIElement
  • 使用电子邮件地址和应用程序密码从 oauth2/token 获取访问令牌

    我们对 Active Directory 下的电子邮件地址使用强制两因素身份验证 我有一个需要服务帐户的应用程序 因此我们为该服务帐户创建了应用程序密码 我们使用以下端点获取访问令牌 https login windows net tena
  • jquery setTimeout 或 setInterval

    我有以下带有 if 条件的代码 if oldMembership lt newMembership var digit ul indexSiteCounterBottom empty for i 0 i lt 9 i if membersh
  • 如何关闭 Invoke-WebRequest 打开的 IE 会话

    我在我的脚本中注意到Invoke WebRequest正在启动 Internet Explorer 大概是为了解析 DOM 有没有办法在脚本结束时关闭这些 IE 会话以进行清理 The line highlighted in red is
  • onDestroy 中 AsyncTask.execute 的含义

    我的代码中运行着这段代码onDestroy功能 Override protected void onDestroy if null theUser glideId JSONObject req new JSONObject try req
  • PHP 按类型对目录中的文件进行排序

    我编写了以下 PHP 代码来显示目录中的文件 它使用 JQuery 来展开文件夹 一切正常 但现在它按字母顺序混合文件类型显示所有文件 我想保留字母顺序 但单独显示文件夹和文件 如何对显示的文件进行排序 以便文件夹显示在顶部 其他文件显示在
  • Typescript 中是否有类似 ReturnType 的 ArgumentsType

    ReturnType
  • 超时错误 - DHL API 到 Google Sheets - UrlFetchApp

    在Python中 我使用浏览器的开发人员选项捕获的请求中的 请求标头 作为标头 并且工作正常 我尝试了与 Apps 脚本相同的操作 但是UrlFetchApp检索Timeout exception function WS var myHea
  • java中有没有一个命令可以测量执行时间?

    java中有没有一个命令可以测量执行时间 就像是 System out println execution time 在代码的末尾 这里有一个完整且稍作修改的示例 http www rgagnon com javadetails java
  • 如何报告后台任务的进度?

    我有一个长时间运行的任务 正在 ExecutorService 线程池的后台执行 就该任务返回进度或中间结果而言 有哪些最佳实践 有没有提供此功能的库 编辑 为了澄清 我正在谈论向其他代码报告进度 而不是向用户报告进度 通常我会使用 Swi