Подтвердить что ты не робот

Задача против службы для операций с базой данных

В чем разница между JavaFX 8 Task и Service и в каком случае лучше использовать один над другим? Что лучше использовать в операциях базы данных?

4b9b3361

Ответ 1

Главное различие между заданием и службой - одно время и повторное выполнение

A Task - одно дело - вы можете использовать только один раз. Если вы хотите снова выполнить ту же задачу, вам нужно создать новый экземпляр Task.

A Service имеет интерфейс многократного использования, чтобы вы могли запускать и перезапускать один экземпляр службы несколько раз. За кулисами он просто принимает определение задачи как ввод и создает новые задачи по мере необходимости.

Пример использования случаев

Пример задачи = > мониторинг и отчетность о проделанной долговременной задаче запуска при инициализации приложения, например Пример страницы Splash.

Пример обслуживания = > внутренняя реализация рабочего процесса для WebEngine, где одна и та же задача, загружая страницу асинхронно, должна повторяться для каждой страницы загружен.

Рекомендация. Сначала попробуйте решить вашу проблему, используя только задачу, а не службу

Пока вы не знакомы с concurrency в JavaFX, я бы посоветовал придерживаться просто использования задачи, а не службы. Задачи имеют несколько более простой интерфейс. Вы можете выполнить большую часть того, что делает Служба, просто создав новые экземпляры задач, когда они вам понадобятся. Если после понимания "Задачи" вы обнаружите, что хотите получить предопределенный API для запуска или перезапуска задач, затем начните использовать Сервис в это время.

Пример доступа к базе данных с помощью задач

Любая задача или служба будут работать для выполнения операций с базой данных из потока приложений JavaFX. Это зависит от ваших личных предпочтений кодирования, а также от конкретной операции с базой данных.

Вот пример, который использует Задача для доступа к базе данных через JDBC. Пример был создан для JavaFX - Background Thread для SQL Query.

Фоновая информация

JavaFX concurrency учебник дает хороший обзор задачи и службы.

Существует отличная документация в Task и Service javadoc, включая пример кода, например, примеры использования.

Определения рабочих, задач и служб (от Javadoc)

Задача и служба Рабочие, поэтому они имеют это общее:

A Worker - это объект, который выполняет некоторую работу в одном или нескольких фоновых потоках, а кто является наблюдаемым и доступен для приложений JavaFX и может использоваться из основного потока приложений JavaFX.

Определение задачи:

Полностью наблюдаемая реализация FutureTask. Задачи предоставляют дополнительные состояния и наблюдаемые свойства, полезные для программирования асинхронных задач в JavaFX., Поскольку служба предназначена для выполнения задачи, любые задачи определяемые приложением или библиотечным кодом, могут быть легко использованы с Обслуживание.

Определение службы:

Служба - это невизуальный компонент, инкапсулирующий информацию требуется выполнить некоторую работу над одним или несколькими фоновыми потоками. В виде часть библиотеки интерфейса JavaFX, служба знает о JavaFX Тема приложения и предназначена для облегчения применения разработчик от бремени управления многопоточным кодом, который взаимодействует с пользовательским интерфейсом. Таким образом, все методы и состояние на Служба предназначена для вызова исключительно из JavaFX Тема приложения.

Сервис реализует Работник. Таким образом, вы можете наблюдать состояние фоновой операции и, возможно, отменить его. Услуга является многоразовой Рабочий, то есть он может быть reset и перезапущен. В связи с этим Сервис может быть создан декларативно и перезагружен по требованию.