数据库操作的任务与服务

2024-02-27

JavaFX 8 任务和服务之间有什么区别?在哪种情况下使用其中一个更好?数据库操作用什么比较好?


任务和服务之间的主要区别 - 一次性执行与重复执行

A Task http://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html是一次性的事情 - 你只能使用一个任务一次。如果想再次执行同一个Task,则需要构造一个新的Task实例。

A Service http://docs.oracle.com/javafx/2/api/javafx/concurrent/Service.html具有可重用的接口,以便您可以多次启动和重新启动单个服务实例。在幕后,它仅将任务定义作为输入并根据需要创建新任务。

示例用例

任务示例=> 监视和报告应用程序初始化时长时间运行的启动任务的进度,如下所示启动页面示例 https://gist.github.com/jewelsea/2305098.

服务示例=> 的WebEngine 的内部负载工作器实现 http://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html#getLoadWorker%28%29对于加载的每个页面,都需要重复异步加载页面的相同任务。

建议 - 最初尝试仅使用任务而不是服务来解决您的问题

在您更加熟悉 JavaFX 中的并发性之前,我建议坚持仅使用任务而不是服务。任务的界面稍微简单一些。您只需在需要时创建新的任务实例即可完成服务的大部分功能。如果在了解 Task 后,您发现自己需要一个预定义的 API 来启动或重新启动 Task,那么此时就开始使用 Service。

使用任务的数据库访问示例

任务或服务都将用于在 JavaFX 应用程序线程之外执行数据库操作。使用哪个取决于您的个人编码偏好以及正在执行的特定数据库操作。

这是一个使用通过 JDBC 访问数据库的任务 https://gist.github.com/jewelsea/4957967。该示例是为JavaFX - SQL 查询的后台线程 https://stackoverflow.com/questions/14878788/javafx-background-thread-for-sql-query.

背景资料

The JavaFX 并发教程 http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm提供了任务和服务的良好概述。

有很好的文档Task http://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html and Service http://docs.oracle.com/javafx/2/api/javafx/concurrent/Service.htmljavadoc,包括示例用例的示例代码。

Worker、Task 和 Service 定义(来自 Javadoc)

任务和服务都是Workers http://docs.oracle.com/javafx/2/api/javafx/concurrent/Worker.html,所以它们有一个共同点:

Worker 是一种在一个或多个后台线程中执行某些工作的对象,其状态可观察且可供 JavaFX 应用程序使用,并且可从主 JavaFX 应用程序线程使用。

任务定义:

一个完全可观察的实现未来任务 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/FutureTask.html。任务公开额外的状态和可观察属性,对于在 JavaFX 中编程异步任务很有用。 。因为 Service 被设计为执行任务,所以任何任务 由应用程序或库代码定义的可以轻松地与 服务。

服务定义:

服务是封装信息的非可视组件 需要在一个或多个后台线程上执行某些工作。作为 作为 JavaFX UI 库的一部分,服务了解 JavaFX 并且是为了减轻应用程序线程的负担而设计的 开发人员摆脱了管理交互的多线程代码的负担 与用户界面。因此,所有方法和状态 服务旨在专门从 JavaFX 调用 应用程序线程。

Service 实现了 Worker。因此,您可以观察 后台操作并可选择取消它。服务是可重复使用的 Worker,意思是可以重置、重启。由于这个原因,一个 服务可以以声明方式构建并按需重新启动。

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

数据库操作的任务与服务 的相关文章

  • 错误:无法初始化主类 FileChooser_1 原因:java.lang.NoClassDefFoundError:阶段 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在这里编写了以下代码 我无法运行该程序 并且不断出现下面提到的错误 我尝试了很多可能的解决方案 但都是徒劳 import java
  • JavaFX webview 不保存cookie

    我对 JavaFX 还很陌生 需要使用浏览器窗口编写应用程序 浏览器将用于登录微图库机构 fotolia 以解决登录时出现的验证码 显然 当关闭并稍后重新启动我的应用程序时 cookie 不会被保存 有没有办法在 JavaFX webvie
  • 更改在不同场景中输入的新场景中的标签文本(javafx)

    我正在尝试更改标签中的文本 该文本是在不同场景的文本字段中输入的文本 我制作了 2 个 FXML 文件 第一个包含一个文本字段和 确定 按钮 第二个包含一个标签 带有文本 标签 我的目标是在文本字段中输入文本 当我按 确定 gt 打开新场景
  • ObservableList 不更新 ArrayList

    对于学校作业 我们正在使用 JavaFX 中的 ObservableList 对象 对吗 我已经为此工作了一天多了 但无法弄清楚 老师只告诉我们 谷歌一下 所以这也没有帮助 基本上 我们正在开发一个基本的管理应用程序来跟踪人们及其家人 人们
  • Javafx 可拆卸窗格系统

    这是我在几个不同的软件中看到的我喜欢的东西 我不知道它来自哪里 也不知道它的真正名称是什么 但这里是 Visual Studio 中的窗格系统的示例 请注意我如何轻松地将窗格固定在任何地方 Javafx 可以实现这样的事情吗 我知道这个问题
  • 使用translateX()和translateY()时,窗格布局内的JavaFX文本与其他元素重叠

    下图是对正在发生的情况的描述 我有一个Pane其中包含一个Text我正在使用下面的代码来制作marquee like effect of the Text 所以当Pane没有足够的空间来显示文本 动画正在开始 文本必须来回移动 以便用户可以
  • JavaFX - 当文本字段具有焦点时加速器不工作

    在我的应用程序中 我有一个使用加速器的屏幕 我正在使用功能键 F3 在我的应用程序中执行操作 它每次都工作正常 但是当我单击此屏幕上的任何文本字段时 功能键不会执行 这是我设置加速器的代码 scene getAccelerators put
  • JavaFX:如何在 JavaFX 中正确使用 ProgressIndicator

    我是 JavaFX 新手 我的 JavaFX 应用程序有问题 我需要在数据库查询之前启动 ProgressIndicator 类型 INDETERMINATE 这是我的代码的一部分 spinner setVisible true passC
  • 如何在 JavaFX 中设置滚动窗格的单位增量?

    The 滚动条 http docs oracle com javafx 2 api javafx scene control ScrollBar htmlJavaFX 中的类包含一个用于设置单位增量的属性 这就是我所追求的 但是我找不到如何
  • 我在使用 JavaFX 绘制十字时遇到问题

    我正在尝试编写代码 在网格上对角绘制 3 个形状 前两个形状是正方形和圆形 我能做到 然而 第三种形状让我有些悲伤 我应该画一个十字 T 版本 而不是 X 每次我写出代码时 它看起来就像一个侧面 我知道我只是错过了一些简单的东西 但我真的很
  • 如何在JavaFX中有效地滚动和缩放大图像?

    作为图像处理应用程序的一部分 我需要创建具有缩放 滚动和矢量叠加功能的简单查看器模块 图像相当大 40000x20000 这使得 ImageView 上的操作变慢 缓冲等 在 JavaFX 中处理巨大图像时 改善用户体验的最佳选项是什么 我
  • Mac OS X 下的 JavaFX:系统菜单和模态窗口

    我目前面临 Mac OS X 下的 JavaFX 菜单和模式对话框的问题 我正在使用该方法 MenuBar setUseSystemMenuBar true 为了将系统菜单栏用于我的应用程序菜单 这工作正常 但如果模式对话框打开 菜单不会被
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • 如何强制 JavaFX 字体抗锯齿?

    在测试 JavaFX 8 应用程序的 GUI 时 我注意到某些标签不显示抗锯齿文本 经过一番谷歌搜索和挣扎后 我发现正在发生一件非常烦人的事情 抗锯齿仅应用于字体大小大于 80 像素的标签 下面是一个比较应用了 AA 的 JavaFX 和
  • JavaFX 抛出 ArrayIndexOutOfBoundsException

    我正在尝试使用 JavaFX 标签和组 通过鼠标拖动将它们移动到屏幕上 新节点从某些线程添加到动画组中 然而 有时我会突然看到以下异常 我假设 当某些节点重叠时 但我不知道问题是什么 因为我的代码不涉及 有谁知道这个异常和根本原因 使用JD
  • Raspberry PI 上的 JavaFX:加载库存着色器时出错

    目前我正在尝试部署我的 JavaFX 应用程序 该应用程序可以在 Windows 上的 Raspberry Model B v1 2 上顺利运行 由于 JavaFX 不能直接在 Raspi 上使用 我已经按照此处所述使用 Gluon 进行了
  • javaFX helloworld jar 无法在不同平台上运行

    我对 JavaFX 很陌生 不确定是否有人知道我做错了什么 这是场景 在win 7上 使用netbeans 8和jdk1 8 0 05创建了一个helloworld jar 在 win 7 上 java jar helloworld jar
  • 使用 JavaFX 和 Maven 将模块描述符添加到库中[重复]

    这个问题在这里已经有答案了 我需要使用反思 https github com ronmamo reflections在一个带有 JavaFX 的 Maven 项目中 我想使用jlink捆绑一个最小的 JRE 问题是我运行时出现以下错误mvn
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • JAVAFX制作动态文本区域大小

    我正在使用 JAVAFX 制作聊天应用程序 消息显示在textArea中 但textArea始终具有相同的大小 如何使 textArea 完全适合文本量 氨氮 下面的代码正是你想要的 public class Main extends Ap

随机推荐

  • ReactReducer真的应该是一个纯函数吗?

    据说useReducer中使用的reducer函数是纯函数 如果我没记错的话 它的行为仅取决于它的输入参数 因此使用相同的输入参数调用它两次会产生相同的效果 从here https stackoverflow com questions 5
  • 使用 Opencv 获取轮廓内的平均颜色

    所以我决定开始一起学习Open CV和Python 我的第一个项目是检测相对静止的背景上的移动物体 然后检测它们的平均颜色以对它们进行排序 至少有 10 个物体需要检测 我正在处理彩色视频 到目前为止 我设法删除背景 识别轮廓 可以选择获取
  • ASP.NET 身份二要素不起作用 - Cookie 问题?

    背景 我一直在使用Identity Sample微软团队提供的项目here http www asp net identity overview features api two factor authentication using sm
  • 如何将图像中的字符和单词分割成轮廓

    我有一些轮廓图像 我想对其进行分割 这基本上意味着我想将轮廓图像中的所有字符保存到单独的图像中 但我得到了几张噪声图像以及所需的输出 我想知道如何在不影响所需输出的情况下去除所有噪声图像 我试图改变价值观w and h 这样我就可以最大限度
  • 如何使用 Firebug 扩展调试 Greasemonkey 脚本?

    我没有找到使用 Firebug 扩展调试 Greasemonkey 脚本的方法 有谁知道如何做到这一点 Thanks 更新者 Mene S human 修复现在已被 Firefox 30 和 Firebug 2 破坏 Firefox 31m
  • 带 dom-repeat 的 Polymer 1.0 动态模板

    我有一个场景 我想创建动态template将与 Polymer 一起使用的元素dom repeat 我当前的原型如下 JSbin演示 http jsbin com hitotahoqe edit js output var domRepea
  • org.openqa.selenium.NoSuchElementException:尝试通过 CssSelector 定位 card-fields-iframe 时,返回的节点 (null) 不是 DOM 元素

    我正在尝试通过部分 id 来定位 iframe 对于这个方法 我使用了 driver switchTo frame driver findElement By cssSelector iframe id card fields number
  • Java计算MD5哈希值

    In http www anyexample com programming java java simple class to compute md5 hash xml http www anyexample com programmin
  • FireFox 中内容可编辑的光标位置/样式

    我在 FireFox 3 中使用 contentEditable 时遇到问题 我遇到的问题是 在单击 div 后 光标将出现在 div 上方或仅部分出现在 div 中 直到我开始输入 此时它的行为正确 关于如何阻止这种情况发生有什么想法吗
  • 为什么在 exec() 之前调用 quit() 不会退出应用程序?

    为什么这个程序可以正常运行并显示主窗口 我希望它会退出quit 在构造函数中调用 主要 cpp include
  • Qt 5.0程序在QtCreator中运行但不在外部运行

    这是上下文 我在Windows 7 x64下用Qt开发了一个程序 我已经升级到Qt 5 0 1 QtCreator 2 6 1 编译器VS2010 现在状态 我的程序在 QtCreator 中运行良好 但是当我在外面尝试时 我收到了几个错误
  • 在 Swift 中向 NSLayoutAnchor 约束添加乘数

    锚约束简化了添加约束的过程 但故事板中可用的乘数属性似乎并不适用于所有类型的约束 例如 作为根据这里的答案 https stackoverflow com questions 63042059 center uilabel created
  • 使用 awk 删除包含唯一第一个字段的行?

    希望仅打印具有重复第一个字段的行 例如从看起来像这样的数据 1 abcd 1 efgh 2 ijkl 3 mnop 4 qrst 4 uvwx 应该打印出 1 abcd 1 efgh 4 qrst 4 uvwx 仅供参考 我的数据中第一个字
  • hadoop/bin/hadoop 没有示例 jar

    我安装了 hadoop 2 2 0 并尝试运行示例 wordcount 程序 为此 我首先使用以下命令将数据导入到 hdfs bin hadoop fs copyFromLocal home prassanna Desktop input
  • FileBeat 收获问题

    我们使用 ELK 来控制我们的程序日志 在我们的 FileBeat 配置中 我们从中获取30种不同包含每秒更新的文件的路径 它仅在产品机器中每秒更新 在其他开发机器中 我们的日志要少得多 我们的日志文件不会被删除 直到它们变旧并且我们停止使
  • Indy 和 smtps:无法连接

    我正在尝试使用 Indy 和说明的技术从 smtps 安全 smtp 发送电子邮件在 Marco Cant 的这篇文章中 http www marcocantu com tips oct06 gmail html 这就是我正在使用的 obj
  • 在 SciKit 线性回归上出现“ValueError:形状未对齐”

    一般来说 SciKit 和 Python 的线性代数 机器学习相当新 所以我似乎无法解决以下问题 我有一个训练集和一个测试数据集 其中包含连续值和离散 分类值 CSV 文件被加载到 Pandas DataFrame 中并匹配形状 分别为 1
  • 初始化列表与向量

    在 C 11 中 可以使用初始化列表来初始化函数中的参数 其目的是什么 不能用 const 向量做同样的事情吗 下面两个程序有什么区别 使用初始化列表 include
  • Apache Beam 计数器/指标在 Flink WebUI 中不可用

    我正在使用 Flink 1 4 1 和 Beam 2 3 0 并且想知道是否可以在 Flink WebUI 或任何地方 中提供可用的指标 如 Dataflow WebUI 中那样 我用过类似的计数器 import org apache be
  • 数据库操作的任务与服务

    JavaFX 8 任务和服务之间有什么区别 在哪种情况下使用其中一个更好 数据库操作用什么比较好 任务和服务之间的主要区别 一次性执行与重复执行 A Task http docs oracle com javafx 2 api javafx