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. This interface is
primarily implemented by both Task and Service, providing
a common API among both classes which makes it easier for libraries and
frameworks to provide workers which work well when developing user interfaces.
A Worker may or may not be reusable depending on the implementation. A
Task, for example, is not reusable while a Service is.
A Worker has a well defined life cycle. Every Worker begins in the
State#READY state. When the Worker has been scheduled for work
(for example, when a Service's javafx.
method is called), it is transitioned to State#SCHEDULED. Even
Workers which are not technically scheduled, but started immediately
(such as with javafx.) will transition through
the State#SCHEDULED on its way to the State#RUNNING state.
When the Worker is actually performing its work, the state will have been
transitioned to State#RUNNING. If the Worker completes normally,
it will end in the State#SUCCEEDED state, and the result of the
Worker will be set as the value property. If however an Exception
occurs during the execution of the Worker, then the state will be set to
State#FAILED and the exception property will be set
to the Exception which occurred.
At any time prior to the conclusion of the Worker (that is, if the state
is not already State#SUCCEEDED or State#FAILED) the developer
may invoke the javafx. method. If called, the
Worker will cease execution (if possible, including use of Thread.interrupt)
and the state changed to State#CANCELLED.
The only valid beginning state for a Worker is State#READY, and the
valid ending states are State#CANCELLED, State#SUCCEEDED,
and State#FAILED. The running property is set to
true when the state is either State#SCHEDULED or State#RUNNING.
The Worker's progress can be monitored via three different properties,
totalWork, workDone, and progress.
These properties are set by the actual implementation of the Worker
interface, but can be observed by anybody. The workDone is
a number between -1 (meaning indeterminate progress) and
totalWork, inclusive. When workDone == totalWork
the progress will be 100% (or 1). totalWork
will be a number between -1 and Long.MAX_VALUE, inclusive. The progress
will be either -1 (meaning indeterminate), or a value between 0 and 1, inclusive,
representing 0% through 100%.
A Worker which is in the State#READY or State#SCHEDULED states
will always have workDone and progress set to -1.
A Worker which is in the State#SUCCEEDED state will always have
workDone == totalWork and progress == 1. In any
other state, the values for these properties may be any value in their
respective valid ranges.
| Modifier and Type | Class and Description |
|---|---|
| public static enum | Worker.
The state of a Worker. |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | |
| public ReadOnlyObjectProperty | Returns: the property representing the exceptionGets the ReadOnlyObjectProperty representing any exception which occurred. |
| public Throwable | Returns: the exception, if one occurredIndicates the exception which occurred while the Worker was running, if any. |
| public String | Returns: the current messageGets a message associated with the current state of this Worker. |
| public double | Returns: the current progressIndicates the current progress of this Worker in terms of percent complete. |
| public Worker. | |
| public String | |
| public double | Returns: the total work to be doneIndicates a maximum value for the |
| public V | |
| public double | Returns: the amount of work doneIndicates the current amount of work that has been completed. |
| public boolean | |
| public ReadOnlyStringProperty | Returns: a property representing the current messageGets the ReadOnlyStringProperty representing the message. |
| public ReadOnlyDoubleProperty | Returns: the property representing the progressGets the ReadOnlyDoubleProperty representing the progress. |
| public ReadOnlyBooleanProperty | Returns: the property representing whether the worker is runningGets the ReadOnlyBooleanProperty representing whether the Worker is running. |
| public ReadOnlyObjectProperty | Returns: The property representing the stateGets the ReadOnlyObjectProperty representing the current state. |
| public ReadOnlyStringProperty | Returns: the property representing the current titleGets the ReadOnlyStringProperty representing the title. |
| public ReadOnlyDoubleProperty | Returns: the property representing the total work to be doneGets the ReadOnlyDoubleProperty representing the maximum amount of work that needs to be done. |
| public ReadOnlyObjectProperty | Returns: The property representing the current valueGets the ReadOnlyObjectProperty representing the value. |
| public ReadOnlyDoubleProperty | Returns: The property representing the amount of work doneGets the ReadOnlyDoubleProperty representing the current progress. |
| cancel | back to summary |
|---|---|
| public boolean cancel() Terminates execution of this Worker. Calling this method will either remove this Worker from the execution queue or stop execution.
| |
| exceptionProperty | back to summary |
|---|---|
| public ReadOnlyObjectProperty Gets the ReadOnlyObjectProperty representing any exception which occurred.
| |
| getException | back to summary |
|---|---|
| public Throwable getException() Indicates the exception which occurred while the Worker was running, if any.
If this property value is
| |
| getMessage | back to summary |
|---|---|
| public String getMessage() Gets a message associated with the current state of this Worker. This may be something such as "Processing image 1 of 3", for example.
| |
| getProgress | back to summary |
|---|---|
| public double getProgress() Indicates the current progress of this Worker in terms of percent complete. A value between zero and one indicates progress toward completion. A value of -1 means that the current progress cannot be determined (that is, it is indeterminate). This property may or may not change from its default value of -1 depending on the specific Worker implementation.
| |
| getState | back to summary |
|---|---|
| public Worker. Specifies the current state of this Worker. The initial value is State.READY. A Task may be restarted, in which case it will progress from one of these end states (SUCCEEDED, CANCELLED, or FAILED) back to READY and then immediately to SCHEDULED and RUNNING. These state transitions may occur immediately one after the other, but will always occur in the prescribed order. | |
| getTitle | back to summary |
|---|---|
| public String getTitle() An optional title that should be associated with this Worker. This may be something such as "Modifying Images".
| |
| getTotalWork | back to summary |
|---|---|
| public double getTotalWork() Indicates a maximum value for the
| |
| getValue | back to summary |
|---|---|
| public V getValue() Specifies the value, or result, of this Worker. This is set upon entering the SUCCEEDED state, and cleared (set to null) if the Worker is reinitialized (that is, if the Worker is a reusable Worker and is reset or restarted).
| |
| getWorkDone | back to summary |
|---|---|
| public double getWorkDone() Indicates the current amount of work that has been completed. Zero or a positive value indicate progress toward completion. This variables value may or may not change from its default value depending on the specific Worker implementation. A value of -1 means that the current amount of work done cannot be determined (ie: it is indeterminate). The value of this property is always less than or equal to totalWork.
| |
| isRunning | back to summary |
|---|---|
| public boolean isRunning() True if the state is either SCHEDULED or RUNNING. When binding a Worker to a
| |
| messageProperty | back to summary |
|---|---|
| public ReadOnlyStringProperty messageProperty() Gets the ReadOnlyStringProperty representing the message.
| |
| progressProperty | back to summary |
|---|---|
| public ReadOnlyDoubleProperty progressProperty() Gets the ReadOnlyDoubleProperty representing the progress.
| |
| runningProperty | back to summary |
|---|---|
| public ReadOnlyBooleanProperty runningProperty() Gets the ReadOnlyBooleanProperty representing whether the Worker is running.
| |
| stateProperty | back to summary |
|---|---|
| public ReadOnlyObjectProperty Gets the ReadOnlyObjectProperty representing the current state.
| |
| titleProperty | back to summary |
|---|---|
| public ReadOnlyStringProperty titleProperty() Gets the ReadOnlyStringProperty representing the title.
| |
| totalWorkProperty | back to summary |
|---|---|
| public ReadOnlyDoubleProperty totalWorkProperty() Gets the ReadOnlyDoubleProperty representing the maximum amount of work that needs to be done. These "work units" have meaning to the Worker implementation, such as the number of bytes that need to be downloaded or the number of images to process or some other such metric.
| |
| valueProperty | back to summary |
|---|---|
| public ReadOnlyObjectProperty Gets the ReadOnlyObjectProperty representing the value.
| |
| workDoneProperty | back to summary |
|---|---|
| public ReadOnlyDoubleProperty workDoneProperty() Gets the ReadOnlyDoubleProperty representing the current progress.
| |
The state of a Worker. The state transitions in a Worker are very well defined. All Workers begin in the READY state. In some circumstances, a Worker might be scheduled for execution before it is actually executed. In such cases, it is sometimes useful to know when the Worker has been SCHEDULED separately from when it is RUNNING. However even in cases where the Worker is executed immediately, the Worker will temporarily enter the SCHEDULED state before entering the RUNNING state. That is, the transition is always from READY to SCHEDULED to RUNNING (unless of course the Worker in cancelled).
A Worker which runs but is never cancelled can only end up in one of two states, either SUCCEEDED or FAILED. It only enters FAILED if an exception was thrown during the execution of the Worker. A Worker may be cancelled when READY, SCHEDULED, or RUNNING, in which case the final status will be CANCELLED. When a Worker is cancelled in one of these circumstances it will transition immediately to the CANCELLED state.
A reusable Worker will transition from CANCELLED, SUCCEEDED or FAILED back to READY. From that point the normal state transitions are again followed.
| Modifier and Type | Field and Description |
|---|---|
| public static final Worker. | |
| public static final Worker. | FAILED
Indicates that this Worker has failed, usually due to some unexpected condition having occurred. |
| public static final Worker. | READY
Indicates that the Worker has not yet been executed and is ready to be executed, or that it has been reinitialized. |
| public static final Worker. | RUNNING
Indicates that this Worker is running. |
| public static final Worker. | SCHEDULED
Indicates that the Worker has been scheduled for execution, but that it is not currently running. |
| public static final Worker. | SUCCEEDED
Indicates that this Worker has completed successfully, and that there
is a valid result ready to be read from the |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static Worker. | |
| public static Worker. |
| CANCELLED | back to summary |
|---|---|
| public static final Worker. Indicates that this Worker has been cancelled via the | |
| FAILED | back to summary |
|---|---|
| public static final Worker. Indicates that this Worker has failed, usually due to some unexpected
condition having occurred. The exception can be retrieved from the
| |
| READY | back to summary |
|---|---|
| public static final Worker. Indicates that the Worker has not yet been executed and is ready to be executed, or that it has been reinitialized. This is the default initial state of the Worker. | |
| RUNNING | back to summary |
|---|---|
| public static final Worker. Indicates that this Worker is running. This is set just immediately prior to the Worker actually doing its first bit of work. | |
| SCHEDULED | back to summary |
|---|---|
| public static final Worker. Indicates that the Worker has been scheduled for execution, but that it is not currently running. This might be because the Worker is waiting for a thread in a thread pool to become available before it can start running. | |
| SUCCEEDED | back to summary |
|---|---|
| public static final Worker. Indicates that this Worker has completed successfully, and that there
is a valid result ready to be read from the | |
| State | back to summary |
|---|---|
| private State() | |
| valueOf | back to summary |
|---|---|
| public static Worker. | |
| values | back to summary |
|---|---|
| public static Worker. | |