Класс Service<V>
- Параметры типа:
-
V- тип объекта, возвращаемого сервисом
- Все реализованные интерфейсы:
-
Worker<V>,EventTarget
- Прямые известные подклассы:
ScheduledService
public abstract class Service<V>
extends Object
implements Worker<V>, EventTarget Сервис — это компонент, не связанный с визуальным представлением, который содержит информацию, необходимую для выполнения какой-либо работы в одном или нескольких фоновых потоках. Будучи частью библиотеки JavaFX UI, сервис знает о потоке JavaFX Application и призван освободить разработчика приложения от необходимости управления многопоточным кодом, взаимодействующим с пользовательским интерфейсом. Таким образом, все методы и состояние сервиса должны вызываться исключительно из потока JavaFX Application. Единственное исключение — это первоначальная настройка сервиса, которая может быть выполнена из любого потока, а также первоначальный запуск сервиса, который также может быть выполнен из любого потока. Однако после инициализации и запуска сервис может быть использован только из потока FX.
Сервис создаёт и управляет Task, который выполняет работу в фоновом потоке. Service реализует Worker. Благодаря этому вы можете наблюдать состояние фоновой задачи и, при необходимости, отменять её. Service — это многократно используемый рабочий элемент (Worker), что означает, что его можно сбросить и перезапустить. Из-за этого сервис можно конструировать декларативно и перезапускать по требованию. После запуска сервис запланирует свою задачу (Task) и будет следить за изменениями состояния задачи. Задача не содержит ссылки на сервис, который её запустил, что означает, что работающая задача не помешает сервису быть удалённым сборщиком мусора.
Если для сервиса указан Executor, то он будет использован для фактического выполнения сервиса. В противном случае будет создан и запущен демонический поток. Если вы хотите создать потоки, не являющиеся демоническими, укажите пользовательский Executor (например, вы можете использовать ThreadPoolExecutor с пользовательской ThreadFactory).
Поскольку сервис предназначен для упрощения декларативных случаев использования, подклассы должны предоставлять в качестве свойств входные параметры для выполняемой работы. Например, предположим, что я хочу написать сервис, который считывает первую строку из любого URL-адреса и возвращает её в качестве строки. Такой сервис можно определить таким образом, что у него будет только одно свойство, url. Он может быть реализован следующим образом:
public static class FirstLineService extends Service<String> {
private StringProperty url = new SimpleStringProperty(this, "url");
public final void setUrl(String value) { url.set(value); }
public final String getUrl() { return url.get(); }
public final StringProperty urlProperty() { return url; }
protected Task createTask() {
final String _url = getUrl();
return new Task<String>() {
protected String call() throws Exception {
URL u = new URL(_url);
BufferedReader in = new BufferedReader(
new InputStreamReader(u.openStream()));
String result = in.readLine();
in.close();
return result;
}
};
}
}
Сервис по умолчанию использует пул потоков Executor с некоторым неопределённым значениями размера или максимальной ёмкостью пула потоков. Это делается для того, чтобы код начинающего уровня не перегружал систему созданием тысяч потоков.
- С момента:
- JavaFX 2.0
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
ObjectProperty<Executor> | executor | Executor, используемый для запуска этого сервиса. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onCancelled | Обработчик события onCancelled вызывается всякий раз, когда состояние задачи Task переходит в состояние CANCELLED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onFailed | Обработчик события onFailed вызывается всякий раз, когда состояние задачи Task переходит в состояние FAILED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onReady | Обработчик события onReady вызывается всякий раз, когда состояние задачи Task переходит в состояние READY. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onRunning | Обработчик события onRunning вызывается всякий раз, когда состояние задачи Task переходит в состояние RUNNING. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onScheduled | Обработчик события onSchedule вызывается всякий раз, когда состояние задачи Task переходит в состояние SCHEDULED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onSucceeded | Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи Task переходит в состояние SUCCEEDED. |
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе javafx.concurrent.Worker
Worker.State
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Service() | Создаёт новый сервис. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<T extends Event> | addEventFilter(EventType<T> eventType,
EventHandler<? super T> eventFilter) | Регистрирует фильтр событий для этой задачи. |
<T extends Event> | addEventHandler(EventType<T> eventType,
EventHandler<? super T> eventHandler) | Регистрирует обработчик событий для этой задачи. |
boolean | cancel() | Отменяет любую текущую выполняющуюся задачу, если таковая имеется. |
protected void | cancelled() | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние CANCELLED. |
protected abstract Task<V> | createTask() | Вызывается после запуска службы в потоке приложения JavaFX. |
protected void | executeTask(Task<V> task) | Использует executor, определённый в этой службе, для выполнения заданной задачи. |
ObjectProperty<Executor> | executorProperty() | Исполнитель, используемый для запуска этой службы. |
protected void | failed() | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние FAILED. |
protected void | fireEvent(Event event) | Вызывает указанное событие. |
Executor | getExecutor() | Получает значение свойства executor. |
EventHandler<WorkerStateEvent> | getOnCancelled() | Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED. |
EventHandler<WorkerStateEvent> | getOnFailed() | Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED. |
EventHandler<WorkerStateEvent> | getOnReady() | Обработчик события onReady вызывается всякий раз, когда состояние задачи переходит в состояние READY. |
EventHandler<WorkerStateEvent> | getOnRunning() | Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING. |
EventHandler<WorkerStateEvent> | getOnScheduled() | Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED. |
EventHandler<WorkerStateEvent> | getOnSucceeded() | Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onCancelledProperty() | Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onFailedProperty() | Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onReadyProperty() | Обработчик события onReady вызывается всякий раз, когда состояние задачи переходит в состояние READY. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onRunningProperty() | Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onScheduledProperty() | Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED. |
ObjectProperty<EventHandler<WorkerStateEvent>> | onSucceededProperty() | Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED. |
protected void | removeEventFilter(EventType<T> eventType,
EventHandler<? super T> eventFilter) | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние READY. |
<T extends Event> | removeEventFilter(EventType<T> eventType,
EventHandler<? super T> eventFilter) | Отменяет регистрацию ранее зарегистрированного фильтра событий из этой задачи. |
<T extends Event> | removeEventHandler(EventType<T> eventType,
EventHandler<? super T> eventHandler) | Отменяет регистрацию ранее зарегистрированного обработчика событий из этой задачи. |
void | reset() | Сбрасывает состояние службы. |
void | restart() | Отменяет любую текущую выполняющуюся задачу, если таковая имеется, и перезапускает эту службу. |
protected void | running() | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние RUNNING. |
protected void | scheduled() | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние SCHEDULED. |
protected <T extends Event> | setEventHandler(EventType<T> eventType,
EventHandler<? super T> eventHandler) | Устанавливает обработчик для этого типа события. |
void | setExecutor(Executor value) | Устанавливает значение свойства executor. |
void | setOnCancelled(EventHandler<WorkerStateEvent> value) | Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED. |
void | setOnFailed(EventHandler<WorkerStateEvent> value) | Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED. |
void | setOnReady(EventHandler<WorkerStateEvent> value) | Обработчик события onReady вызывается всякий раз, когда состояние задачи переходит в состояние READY. |
void | setOnRunning(EventHandler<WorkerStateEvent> value) | Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING. |
void | setOnScheduled(EventHandler<WorkerStateEvent> value) | Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED. |
void | setOnSucceeded(EventHandler<WorkerStateEvent> value) | Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED. |
void | start() | Запускает эту службу. |
protected void | succeeded() | Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние службы переходит в состояние SUCCEEDED. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе javafx.event.EventTarget
buildEventDispatchChain
Методы, объявленные в интерфейсе javafx.concurrent.Worker
exceptionProperty, getException, getMessage, getProgress, getState, getTitle, getTotalWork, getValue, getWorkDone, isRunning, messageProperty, progressProperty, runningProperty, stateProperty, titleProperty, totalWorkProperty, valueProperty, workDoneProperty
Подробности свойства
executor
public final ObjectProperty<Executor> executorProperty
- См. также:
-
getExecutor(),setExecutor(Executor)
onReady
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnReady(),setOnReady(EventHandler)
onScheduled
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnScheduled(),setOnScheduled(EventHandler)
onRunning
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnRunning(),setOnRunning(EventHandler)
onSucceeded
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnSucceeded(),setOnSucceeded(EventHandler)
onCancelled
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnCancelled(),setOnCancelled(EventHandler)
onFailed
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty
- С:
- JavaFX 2.1
- См. также:
-
getOnFailed(),setOnFailed(EventHandler)
Подробности конструктора
Service
protected Service()
Подробности метода
setExecutor
public final void setExecutor(Executor value)
- Описание свойства:
- Исполнитель, используемый для выполнения этого сервиса. Если исполнитель не указан, то для выполнения сервиса будет создан и использован новый демонический поток с помощью некоторого исполнителя по умолчанию.
getExecutor
public final Executor getExecutor()
- Описание свойства:
- Исполнитель, используемый для выполнения этого сервиса. Если исполнитель не указан, то для выполнения сервиса будет создан и использован новый демонический поток с помощью некоторого исполнителя по умолчанию.
executorProperty
public final ObjectProperty<Executor> executorProperty()
- См. также:
-
getExecutor(),setExecutor(Executor)
onReadyProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty()
- С:
- JavaFX 2.1
- См. также:
-
getOnReady(),setOnReady(EventHandler)
getOnReady
public final EventHandler<WorkerStateEvent> getOnReady()
- Возвращает:
- обработчик события onReady, если он есть
- С:
- JavaFX 2.1
setOnReady
public final void setOnReady(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик события, может быть null для его очистки - С:
- JavaFX 2.1
ready
protected void ready()
- С:
- JavaFX 2.1
onScheduledProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
- С:
- JavaFX 2.1
- См. также:
-
getOnScheduled(),setOnScheduled(EventHandler)
getOnScheduled
public final EventHandler<WorkerStateEvent> getOnScheduled()
- Возвращает:
- обработчик события onScheduled, если он есть
- С:
- JavaFX 2.1
setOnScheduled
public final void setOnScheduled(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик события, может быть null для его очистки - С:
- JavaFX 2.1
scheduled
protected void scheduled()
- С:
- JavaFX 2.1
onRunningProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
- С:
- JavaFX 2.1
- См. также:
-
getOnRunning(),setOnRunning(EventHandler)
getOnRunning
public final EventHandler<WorkerStateEvent> getOnRunning()
- Возвращает:
- обработчик события onRunning, если он есть
- С:
- JavaFX 2.1
setOnRunning
public final void setOnRunning(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик события, может быть null для его очистки - С:
- JavaFX 2.1
running
protected void running()
- С:
- JavaFX 2.1
onSucceededProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
- С:
- JavaFX 2.1
- См. также:
-
getOnSucceeded(),setOnSucceeded(EventHandler)
getOnSucceeded
public final EventHandler<WorkerStateEvent> getOnSucceeded()
- Возвращает:
- обработчик события onSucceeded, если он есть
- С:
- JavaFX 2.1
setOnSucceeded
public final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик события, может быть null для его очистки - С:
- JavaFX 2.1
succeeded
protected void succeeded()
- С:
- JavaFX 2.1
Обработчик onCancelled
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
- С момента:
- JavaFX 2.1
- См. также:
-
getOnCancelled(),setOnCancelled(EventHandler)
getOnCancelled
public final EventHandler<WorkerStateEvent> getOnCancelled()
- Возвращает:
- обработчик события onCancelled, если таковой существует
- С момента:
- JavaFX 2.1
setOnCancelled
public final void setOnCancelled(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик событий, может быть null для его удаления - С момента:
- JavaFX 2.1
cancelled
protected void cancelled()
- С момента:
- JavaFX 2.1
Обработчик onFailed
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
- С момента:
- JavaFX 2.1
- См. также:
-
getOnFailed(),setOnFailed(EventHandler)
getOnFailed
public final EventHandler<WorkerStateEvent> getOnFailed()
- Возвращает:
- обработчик события onFailed, если таковой существует
- С момента:
- JavaFX 2.1
setOnFailed
public final void setOnFailed(EventHandler<WorkerStateEvent> value)
- Параметры:
-
value- обработчик событий, может быть null для его удаления - С момента:
- JavaFX 2.1
failed
protected void failed()
- С момента:
- JavaFX 2.1
cancel
public boolean cancel()
- Определено в:
-
cancelв интерфейсеWorker<V> - Возвращает:
- возвращает true, если отмена была успешной
restart
public void restart()
reset
public void reset()
start
public void start()
executeTask
protected void executeTask(Task<V> task)
Использует executor, определенный в этом сервисе, для выполнения заданной задачи. Если executor равно null, используется дефолтный исполняющий механизм, который создаст новый демонический поток для выполнения этой задачи.
Этот метод предназначен только для вызова реализацией сервиса.
- Параметры:
-
task- непустая задача для выполнения - С момента:
- JavaFX 2.1
addEventHandler
public final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
- Параметры типа:
-
T- конкретный класс события обработчика - Параметры:
-
eventType- тип событий, принимаемых обработчиком -
eventHandler- обработчик для регистрации - Исключения:
-
NullPointerException- если тип события или обработчик равен null - С момента:
- JavaFX 2.1
removeEventHandler
public final <T extends Event> void removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
- Параметры типа:
-
T- конкретный класс события обработчика - Параметры:
-
eventType- тип события, из которого нужно удалить обработчик -
eventHandler- обработчик для удаления - Исключения:
-
NullPointerException- если тип события или обработчик равен null - С момента:
- JavaFX 2.1
addEventFilter
public final <T extends Event> void addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
- Параметры типа:
-
T- конкретный класс события фильтра - Параметры:
-
eventType- тип событий, принимаемых фильтром -
eventFilter- фильтр для регистрации - Исключения:
-
NullPointerException- если тип события или фильтр равен null - С момента:
- JavaFX 2.1
removeEventFilter
public final <T extends Event> void removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
- Параметры типа:
-
T- конкретный класс события фильтра - Параметры:
-
eventType- тип события, из которого нужно удалить фильтр -
eventFilter- фильтр для удаления - Исключения:
-
NullPointerException- если тип события или фильтр равен null - С момента:
- JavaFX 2.1
setEventHandler
protected final <T extends Event> void setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
- Параметры типа:
-
T- конкретный класс события обработчика - Параметры:
-
eventType- тип события, который нужно связать с данным обработчиком -
eventHandler- обработчик для регистрации или null для отмены регистрации - Исключения:
-
NullPointerException- если тип события равен null - С момента:
- JavaFX 2.1
fireEvent
protected final void fireEvent(Event event)
Этот метод должен вызываться в потоке FX.
- Параметры:
-
event- событие для вызова - С момента:
- JavaFX 2.1
createTask
protected abstract Task<V> createTask()
protected Task createTask() {
final String url = myService.getUrl();
return new Task<String>() {
protected String call() {
URL u = new URL("http://www.oracle.com");
BufferedReader in = new BufferedReader(
new InputStreamReader(u.openStream()));
String result = in.readLine();
in.close();
return result;
}
}
}
Если задача является предопределенным классом (а не анонимным классом), и если она соответствует рекомендуемой лучшей практике, то нет необходимости сохранять состояние перед созданием задачи, поскольку ее состояние полностью предоставляется в ее конструкторе.
protected Task createTask() {
// This is safe because getUrl is called on the FX Application
// Thread and the FirstLineReaderTasks stores it as an
// immutable property
return new FirstLineReaderTask(myService.getUrl());
}
- Возвращает:
- задачу для выполнения
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.