WorkManager which provides a facility
to submit Work instances for execution. This frees the user
from having to create Java threads directly to do work. Further, this
allows efficient pooling of thread resources and more control over thread
usage.
The various stages in Work processing are:
Work instance is being submitted for
execution. The Work instance could either be accepted or
rejected with a WorkRejectedException set to an appropriate
error code. Work instance has been
accepted. The accepted Work instance could either start
execution or could be rejected again with a
WorkRejectedException set to an appropriate error code.
There is no guarantee on when the execution would start unless a start
timeout duration is specified. When a start timeout is specified, the
Work execution must be started within the specified
duration (not a real-time guarantee), failing which a
WorkRejectedException set to an error code
(WorkRejected.TIMED_OUT) is thrown. Work instance has been rejected.
The Work instance could be rejected during Work
submittal or after the Work instance has been accepted
(but before Work instance starts execution). The rejection could be due
to internal factors or start timeout expiration. A
WorkRejectedException with an appropriate error code
(indicates the reason) is thrown in both cases. Work
instance has started. This means that a thread
has been allocated for its execution. But this
does not guarantee that the allocated thread has been scheduled to run
on a CPU resource. Once execution is started, the allocated thread
sets up an appropriate execution context (transaction , security, etc)
and calls Work.run(). Note, any exception thrown during execution context
setup or Work.run() leads to completion of processing. Work has been
completed. The execution could complete with or without an exception.
The WorkManager catches any exception thrown during
Work processing (which includes execution context setup),
and wraps it with a WorkCompletedException. | Modifier and Type | Field and Description |
|---|---|
| public static final long | IMMEDIATE
A constant to indicate timeout duration. |
| public static final long | INDEFINITE
A constant to indicate timeout duration. |
| public static final long | UNKNOWN
A constant to indicate an unknown start delay duration or other unknown values. |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | doWork(Work
The unit of work to be done.
Could be long or short-lived. work, long a time duration (in milliseconds)
within which the execution of the startTimeout, ExecutionContext Work instance must
start. Otherwise, the Work instance is rejected with a
WorkRejectedException set to an appropriate error code
(WorkRejectedException.TIMED_OUT). Note, this
does not offer real-time guarantees.an object containing the execution
context with which the submitted execContext, WorkListener Work instance must
be executed.an object which would be notified
when the various workListener)Work processing events (work accepted,
work rejected, work started, work completed) occur.Accepts a |
| public void | scheduleWork(Work
The unit of work to be done.
Could be long or short-lived. work)Accepts a |
| public void | scheduleWork(Work
The unit of work to be done.
Could be long or short-lived. work, long a time duration (in milliseconds)
within which the execution of the startTimeout, ExecutionContext Work instance must
start. Otherwise, the Work instance is rejected with a
WorkRejectedException set to an appropriate error code
(WorkRejectedException.TIMED_OUT). Note, this
does not offer real-time guarantees.an object containing the execution
context with which the submitted execContext, WorkListener Work instance must
be executed.an object which would be notified
when the various workListener)Work processing events (work accepted,
work rejected, work started, work completed) occur.Accepts a |
| public long | Returns: the time elapsed (in milliseconds) fromWork
acceptance until start of execution. Note, this does not offer
real-time guarantees. It is valid to return -1, if the actual start
delay duration is unknown.The unit of work to be done.
Could be long or short-lived. work)Accepts a |
| public long | Returns: the time elapsed (in milliseconds) fromWork
acceptance until start of execution. Note, this does not offer
real-time guarantees. It is valid to return -1, if the actual start
delay duration is unknown.The unit of work to be done.
Could be long or short-lived. work, long a time duration (in milliseconds)
within which the execution of the startTimeout, ExecutionContext Work instance must
start. Otherwise, the Work instance is rejected with a
WorkRejectedException set to an appropriate error code
(WorkRejectedException.TIMED_OUT). Note, this
does not offer real-time guarantees.an object containing the execution
context with which the submitted execContext, WorkListener Work instance must
be executed.an object which would be notified
when the various workListener)Work processing events (work accepted,
work rejected, work started, work completed) occur.Accepts a |
| IMMEDIATE | back to summary |
|---|---|
| public static final long IMMEDIATE A constant to indicate timeout duration. A zero timeout value indicates an action be performed immediately. The WorkManager implementation must timeout the action as soon as possible. | |
| INDEFINITE | back to summary |
|---|---|
| public static final long INDEFINITE A constant to indicate timeout duration. A maximum timeout value indicates that an action be performed arbitrarily without any time constraint. | |
| UNKNOWN | back to summary |
|---|---|
| public static final long UNKNOWN A constant to indicate an unknown start delay duration or other unknown values. | |
| doWork | back to summary |
|---|---|
| public void doWork(Work work) throws WorkException Accepts a
| |
| doWork | back to summary |
|---|---|
| public void doWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts a
| |
| scheduleWork | back to summary |
|---|---|
| public void scheduleWork(Work work) throws WorkException Accepts a
| |
| scheduleWork | back to summary |
|---|---|
| public void scheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts a
| |
| startWork | back to summary |
|---|---|
| public long startWork(Work work) throws WorkException Accepts a
| |
| startWork | back to summary |
|---|---|
| public long startWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts a
| |