gpt4 book ai didi

javafx-2 - 数据库操作的任务与服务

转载 作者:行者123 更新时间:2023-12-03 03:11:34 25 4
gpt4 key购买 nike

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

最佳答案

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

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

一个Service具有可重用的接口(interface),以便您可以多次启动和重新启动单个服务实例。在幕后,它仅将任务定义作为输入并根据需要创建新任务。

示例用例

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

服务示例 => internal load worker implementation for WebEngine对于加载的每个页面,需要重复异步加载页面的相同任务。

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

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

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

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

这是一个使用 Task to access a database via JDBC 的示例。该示例是为 JavaFX - Background Thread for SQL Query 创建的.

背景信息

JavaFX concurrency tutorial提供了任务和服务的良好概述。

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

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

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

A Worker is an object which performs some work in one or more background threads, and whose state is observable and available to JavaFX applications and is usable from the main JavaFX Application thread.

任务定义:

A fully observable implementation of a FutureTask. Tasks expose additional state and observable properties useful for programming asynchronous tasks in JavaFX . . Because Service is designed to execute a Task, any Tasksdefined by the application or library code can easily be used with aService.

服务定义:

A Service is a non-visual component encapsulating the informationrequired to perform some work on one or more background threads. Aspart of the JavaFX UI library, the Service knows about the JavaFXApplication thread and is designed to relieve the applicationdeveloper from the burden of managing multithreaded code that interactswith the user interface. As such, all of the methods and state on theService are intended to be invoked exclusively from the JavaFXApplication thread.

Service implements Worker. As such, you can observe the state of thebackground operation and optionally cancel it. Service is a reusableWorker, meaning that it can be reset and restarted. Due to this, aService can be constructed declaratively and restarted on demand.

关于javafx-2 - 数据库操作的任务与服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com