Javafx 2 数据库操作的任务与服务

Javafx 2 数据库操作的任务与服务,javafx-2,javafx,javafx-8,Javafx 2,Javafx,Javafx 8,JavaFX8任务和服务之间的区别是什么?在哪种情况下,使用一个比另一个更好?在数据库操作中使用什么更好?任务和服务之间的主要区别-一次执行与重复执行 任务是一次性的-您只能使用一次任务。如果要再次执行相同的任务,则需要构造一个新的任务实例 具有可重用的接口,因此可以多次启动和重新启动单个服务实例。在幕后,它只是将任务定义作为输入,并根据需要创建新任务 示例用例 Task Example=>在应用程序初始化时监视和报告长时间运行的启动任务的进度,如下所示 服务示例=>其中异步加载页面的相同任务需

JavaFX8任务和服务之间的区别是什么?在哪种情况下,使用一个比另一个更好?在数据库操作中使用什么更好?

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

任务是一次性的-您只能使用一次任务。如果要再次执行相同的任务,则需要构造一个新的任务实例

具有可重用的接口,因此可以多次启动和重新启动单个服务实例。在幕后,它只是将任务定义作为输入,并根据需要创建新任务

示例用例

Task Example=>在应用程序初始化时监视和报告长时间运行的启动任务的进度,如下所示

服务示例=>其中异步加载页面的相同任务需要为加载的每个页面重复

推荐-最初尝试仅使用任务而非服务解决您的问题

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

使用任务访问数据库示例

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

下面是一个使用的示例。该示例是为创建的

背景信息

提供了任务和服务的良好概述

和javadoc中有很好的文档,包括示例用例的示例代码

工作者、任务和服务定义(来自Javadoc)

任务和服务都是,所以它们有一个共同点:

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

任务定义:

一个完全可观察的实现。任务公开了在JavaFX中编程异步任务时有用的附加状态和可观察属性。因为服务是为执行任务而设计的,所以任何任务 由应用程序或库定义的代码可以轻松地与 服务

服务定义:

服务是封装信息的非可视组件 需要在一个或多个后台线程上执行某些工作。作为 作为JavaFXUI库的一部分,该服务了解JavaFX 应用程序线程,设计用于释放应用程序 开发人员不再需要管理交互的多线程代码 使用用户界面。因此,上的所有方法和状态 服务旨在专门从JavaFX调用 应用程序线程

服务实现了一个工人。因此,您可以观察 后台操作,并可选择取消它。服务是可重用的 Worker,这意味着它可以重置和重新启动。因此, 服务可以声明式构造并根据需要重新启动


我认为这些定义令人困惑的地方在于,服务文档中提到“将应用程序开发人员从管理与用户界面交互的多线程代码的负担中解脱出来”,但任务并没有以直接的方式讨论它。几乎使您看起来需要使用服务而不是任务来完成这项工作。