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

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(使用前将#替换为@)

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

  • 上传进度条 Java Servlet?

    我想使用 servlet 显示上传进度条 我尝试过Ajax iFrame 技术 页面没有重新加载 文件也被上传 但是 进度条没有出现 有没有可用于 javaservlts 的 jQuery 进度插件 Thanks 我强烈推荐jQuery 上
  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • 同一服务器上的许多应用程序具有相同的 JMX Mbean 类

    我有超过 5 个 Spring Web 应用程序 它们都在使用另一个通用库 这个公共库有它自己的 MBean 由于强制的唯一 objectName 约束 我的应用程序无法部署在同一服务器上 我使用 MBean 的方式是这样的 Managed
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 如何使用 Java Apache POI 隐藏 Excel 工作表中以下未使用的行?

    我正在使用数据库中的数据填充模板 Excel 工作表 for Map
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • 如何向页面添加 HTML 页眉和页脚?

    如何使用 itext 从 html 源添加标题到 pdf 目前 我们已经扩展了 PdfPageEventHelper 并重写了这些方法 工作正常 但当我到达 2 个以上页面时 它会抛出 RuntimeWorkerException Over
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • Azure Java SDK:ServiceException:ForbiddenError:

    尝试了基本位置检索器代码 如下所示 String uri https management core windows net String subscriptionId XXXXXXXX 5fad XXXXXX 9dfa XXXXXX St
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • titledBorder 标题中的图标

    您好 是否可以在 titledBorder 的标题中放置一个图标 例如以下代码 import java awt GridLayout import javax swing JFrame import javax swing JLabel i
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 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