Интерфейс Worker<V>
Все известные реализующие классы:
public interface Worker<V>
Worker — это объект, который выполняет работу в одном или нескольких фоновых потоках, состояние которого наблюдаемо и доступно приложениям JavaFX, и который можно использовать из основного потока приложения JavaFX. Данный интерфейс в основном реализуется как Task, так и Service, обеспечивая общий API для обоих классов, что облегчает библиотекам и фреймворкам предоставление работников, хорошо работающих при разработке пользовательских интерфейсов.
Worker может быть или не быть повторно используемым в зависимости от реализации. Например, Task не является повторно используемым, в то время как Service является.
У Worker есть хорошо определённый жизненный цикл. Каждый Worker начинается в состоянии Worker.State.READY. Когда Worker запланирован на выполнение (например, когда метод Service.start() Service вызывается), он переходит в состояние Worker.State.SCHEDULED. Даже Worker, который не запланирован технически, но сразу же запущен (например, с помощью FutureTask.run()) будет переходить через состояние Worker.State.SCHEDULED по пути к состоянию Worker.State.RUNNING.
Когда Worker фактически выполняет свою работу, его состояние переходит в Worker.State.RUNNING. Если Worker завершается нормально, он заканчивает в состоянии Worker.State.SUCCEEDED, и результат работы Worker устанавливается как свойство value. Однако, если во время выполнения Worker возникает исключение, состояние устанавливается в Worker.State.FAILED, и свойство exception устанавливается в произошедшее исключение.
В любое время до завершения работы Worker (то есть, если состояние ещё не Worker.State.SUCCEEDED или Worker.State.FAILED), разработчик может вызвать метод cancel(). Если он вызван, Worker прекратит выполнение (при необходимости, включая использование Thread.interrupt) и состояние изменится на Worker.State.CANCELLED.
Единственное допустимое начальное состояние для Worker — Worker.State.READY, а допустимые конечные состояния — Worker.State.CANCELLED, Worker.State.SUCCEEDED и Worker.State.FAILED. Свойство running устанавливается в true, когда состояние равно Worker.State.SCHEDULED или Worker.State.RUNNING.
Прогресс Worker можно отслеживать через три различных свойства: totalWork, workDone и progress. Эти свойства устанавливаются фактической реализацией интерфейса Worker, но могут наблюдаться кем угодно. workDone — число между -1 (означает неопределённый прогресс) и totalWork включительно. Когда workDone == totalWork, progress будет 100% (или 1). totalWork будет числом между -1 и Long.MAX_VALUE, включительно. Прогресс будет либо -1 (означает неопределённость), либо значением от 0 до 1, включительно, представляющее от 0% до 100%.
Worker, находящийся в состояниях Worker.State.READY или Worker.State.SCHEDULED, всегда будет иметь workDone и progress, установленные в -1. Worker в состоянии Worker.State.SUCCEEDED всегда будет иметь workDone == totalWork и progress == 1. В любом другом состоянии значения этих свойств могут быть любыми значениями в соответствующих допустимых диапазонах.
С тех пор:
JavaFX 2.0
-
Краткое описание свойств
Все методыМетоды экземпляровАбстрактные методы Тип Свойство и описание ReadOnlyObjectProperty<Throwable>exceptionПолучает ReadOnlyObjectProperty, представляющую любое возникшее исключение.ReadOnlyStringPropertymessageПолучает ReadOnlyStringProperty, представляющую сообщение.ReadOnlyDoublePropertyprogressПолучает ReadOnlyDoubleProperty, представляющую прогресс.ReadOnlyBooleanPropertyrunningПолучает ReadOnlyBooleanProperty, представляющую, работает ли Worker.ReadOnlyObjectProperty<Worker.State>stateПолучает ReadOnlyObjectProperty, представляющую текущее состояние.ReadOnlyStringPropertytitleПолучает ReadOnlyStringProperty, представляющую заголовок.ReadOnlyDoublePropertytotalWorkПолучает ReadOnlyDoubleProperty, представляющую максимальное количество работы, которое необходимо выполнить.ReadOnlyObjectProperty<V>valueПолучает ReadOnlyObjectProperty, представляющую значение.ReadOnlyDoublePropertyworkDoneПолучает ReadOnlyDoubleProperty, представляющую текущий прогресс.
-
Краткое описание вложенных классов
Вложенные классы Модификатор и тип Интерфейс и описание static classWorker.StateСостояние Worker.
-
Краткое описание методов
Все методыМетоды экземпляровАбстрактные методы Модификатор и тип Метод и описание booleancancel()Прекращает выполнение этого Worker.ReadOnlyObjectProperty<Throwable>exceptionProperty()Получает ReadOnlyObjectProperty, представляющую любое возникшее исключение.ThrowablegetException()Указывает исключение, произошедшее во время работы Worker, если таковое имеется.StringgetMessage()Получает сообщение, связанное с текущим состоянием этого Worker.doublegetProgress()Указывает текущий прогресс этого Worker в процентах завершения.Worker.StategetState()Указывает текущее состояние этого Worker.StringgetTitle()Необязательный заголовок, который должен быть связан с этим Worker.doublegetTotalWork()Указывает максимальное значение для свойстваworkDoneProperty().VgetValue()Указывает значение или результат работы этого Worker.doublegetWorkDone()Указывает текущее количество завершённой работы.booleanisRunning()True, если состояние равно SCHEDULED или RUNNING.ReadOnlyStringPropertymessageProperty()Получает ReadOnlyStringProperty, представляющую сообщение.ReadOnlyDoublePropertyprogressProperty()Получает ReadOnlyDoubleProperty, представляющую прогресс.ReadOnlyBooleanPropertyrunningProperty()Получает ReadOnlyBooleanProperty, представляющую, работает ли Worker.ReadOnlyObjectProperty<Worker.State>stateProperty()Получает ReadOnlyObjectProperty, представляющую текущее состояние.ReadOnlyStringPropertytitleProperty()Получает ReadOnlyStringProperty, представляющую заголовок.ReadOnlyDoublePropertytotalWorkProperty()Получает ReadOnlyDoubleProperty, представляющую максимальное количество работы, которое необходимо выполнить.ReadOnlyObjectProperty<V>valueProperty()Получает ReadOnlyObjectProperty, представляющую значение.ReadOnlyDoublePropertyworkDoneProperty()Получает ReadOnlyDoubleProperty, представляющую текущий прогресс.
-
Подробности свойства
-
state
ReadOnlyObjectProperty<Worker.State> stateProperty
Возвращает ReadOnlyObjectProperty, представляющий текущее состояние.См. также:
-
value
ReadOnlyObjectProperty<V> valueProperty
Возвращает ReadOnlyObjectProperty, представляющий значение.См. также:
-
exception
ReadOnlyObjectProperty<Throwable> exceptionProperty
Возвращает ReadOnlyObjectProperty, представляющий любой возникший исключение.См. также:
-
workDone
ReadOnlyDoubleProperty workDoneProperty
Возвращает ReadOnlyDoubleProperty, представляющий текущий прогресс.См. также:
-
totalWork
ReadOnlyDoubleProperty totalWorkProperty
Возвращает ReadOnlyDoubleProperty, представляющий максимальное количество работы, которое необходимо выполнить. Эти «единицы работы» имеют значение для реализации Worker, например, количество байтов, которые необходимо загрузить, или количество изображений для обработки, или другой подобный показатель.См. также:
-
progress
ReadOnlyDoubleProperty progressProperty
Возвращает ReadOnlyDoubleProperty, представляющий прогресс.См. также:
-
running
ReadOnlyBooleanProperty runningProperty
Возвращает ReadOnlyBooleanProperty, указывающее, запущен ли Worker.См. также:
-
message
ReadOnlyStringProperty messageProperty
Возвращает ReadOnlyStringProperty, представляющий сообщение.См. также:
-
title
ReadOnlyStringProperty titleProperty
Возвращает ReadOnlyStringProperty, представляющий заголовок.См. также:
-
-
Подробности метода
-
getState
Worker.State getState()
Указывает текущее состояние этого Worker. Начальное значение — State.READY. Задача может быть перезапущена, в этом случае она перейдет из одного из этих конечных состояний (SUCCEEDED, CANCELLED или FAILED) обратно в READY, а затем сразу в SCHEDULED и RUNNING. Эти переходы состояний могут произойти сразу друг за другом, но всегда будут происходить в предписанном порядке.Возвращает:
Текущее состояние этого Worker
-
stateProperty
ReadOnlyObjectProperty<Worker.State> stateProperty()
Возвращает ReadOnlyObjectProperty, представляющий текущее состояние.См. также:
-
getValue
V getValue()
Указывает значение или результат этого Worker. Это устанавливается при входе в состояние SUCCEEDED и очищается (устанавливается в null), если Worker переинициализируется (то есть, если Worker является многоразовым Worker и сброшен или перезапущен).Возвращает:
текущее значение этого Worker
-
valueProperty
ReadOnlyObjectProperty<V> valueProperty()
Возвращает ReadOnlyObjectProperty, представляющий значение.См. также:
-
getException
Throwable getException()
Указывает исключение, которое произошло во время выполнения Worker, если оно имело место. Если значение этого свойстваnull, нет известного исключения, даже если статус FAILED. Если это свойство неnull, оно, скорее всего, будет содержать исключение, описывающее причину сбоя.Возвращает:
исключение, если оно имело место
-
exceptionProperty
ReadOnlyObjectProperty<Throwable> exceptionProperty()
Возвращает ReadOnlyObjectProperty, представляющий любое возникшее исключение.См. также:
-
getWorkDone
double getWorkDone()
Указывает текущее количество выполненной работы. Ноль или положительное значение указывает прогресс к завершению. Значение этой переменной может или не может меняться от своего значения по умолчанию в зависимости от конкретной реализации Worker. Значение -1 означает, что текущее количество выполненной работы не может быть определено (т. е. оно неопределенно). Значение этого свойства всегда меньше или равно totalWork.Возвращает:
количество выполненной работы
См. также:
-
workDoneProperty
ReadOnlyDoubleProperty workDoneProperty()
Возвращает ReadOnlyDoubleProperty, представляющий текущий прогресс.См. также:
-
getTotalWork
double getTotalWork()
Указывает максимальное значение для свойстваworkDoneProperty(). totalWork будет либо -1 (указывая, что количество работы неопределенно), либо ненулевым значением, меньшим или равным Double.MAX_VALUE.Возвращает:
общая работа, которая должна быть выполнена
См. также:
-
totalWorkProperty
ReadOnlyDoubleProperty totalWorkProperty()
Возвращает ReadOnlyDoubleProperty, представляющий максимальное количество работы, которое необходимо выполнить. Эти «единицы работы» имеют значение для реализации Worker, например, количество байтов, которые необходимо загрузить, или количество изображений для обработки, или другой подобный показатель.См. также:
-
getProgress
double getProgress()
Указывает текущий прогресс этого Worker в процентах завершения. Значение от нуля до единицы указывает прогресс к завершению. Значение -1 означает, что текущий прогресс не может быть определен (то есть, он неопределен). Это свойство может или не может изменяться от своего значения по умолчанию -1 в зависимости от конкретной реализации Worker.Возвращает:
текущий прогресс
См. также:
-
progressProperty
ReadOnlyDoubleProperty progressProperty()
Возвращает ReadOnlyDoubleProperty, представляющий прогресс.См. также:
-
isRunning
boolean isRunning()
True, если состояние равно SCHEDULED или RUNNING. При привязке Worker кProgressIndicator, вы обычно привязываете видимость ProgressIndicator к свойству running Worker, а прогресс ProgressIndicator — к свойству progress Worker.Возвращает:
true, если этот Worker запущен
-
runningProperty
ReadOnlyBooleanProperty runningProperty()
Возвращает ReadOnlyBooleanProperty, представляющее, запущен ли Worker.См. также:
-
getMessage
String getMessage()
Возвращает сообщение, связанное с текущим состоянием этого Worker. Это может быть что-то вроде «Обработка изображения 1 из 3», например.Возвращает:
текущее сообщение
-
messageProperty
ReadOnlyStringProperty messageProperty()
Возвращает ReadOnlyStringProperty, представляющее сообщение.См. также:
-
getTitle
String getTitle()
Необязательный заголовок, который должен быть связан с этим Worker. Это может быть что-то вроде «Изменение изображений».Возвращает:
текущий заголовок
-
titleProperty
ReadOnlyStringProperty titleProperty()
Возвращает ReadOnlyStringProperty, представляющее заголовок.См. также:
-
cancel
boolean cancel()
Прерывает выполнение этого Worker. Вызов этого метода либо удалит этот Worker из очереди выполнения, либо остановит выполнение.Возвращает:
возвращает true, если отмена выполнена успешно
-
© 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.