public interface WorkManager
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 |
---|---|
static long |
IMMEDIATE
A constant to indicate timeout duration.
|
static long |
INDEFINITE
A constant to indicate timeout duration.
|
static long |
UNKNOWN
A constant to indicate an unknown start delay duration or other unknown
values.
|
Modifier and Type | Method and Description |
---|---|
void |
doWork(Work work)
Accepts a
Work instance for processing. |
void |
doWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a
Work instance for processing. |
void |
scheduleWork(Work work)
Accepts a
Work instance for processing. |
void |
scheduleWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a
Work instance for processing. |
long |
startWork(Work work)
Accepts a
Work instance for processing. |
long |
startWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a
Work instance for processing. |
static final long IMMEDIATE
static final long INDEFINITE
static final long UNKNOWN
void doWork(Work work) throws WorkException
Work
instance for processing. This call
blocks until the Work
instance completes execution.
There is no guarantee on when the accepted Work
instance would start execution ie., there is no time constraint
to start execution. (that is, startTimeout=INDEFINITE)work
- The unit of work to be done.
Could be long or short-lived.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors.WorkCompletedException
- indicates that a
Work
instance has completed execution with an exception.WorkException
void doWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
Work
instance for processing. This call
blocks until the Work
instance completes execution.work
- The unit of work to be done.
Could be long or short-lived.startTimeout
- a time duration (in milliseconds)
within which the execution of the 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.execContext
- an object containing the execution
context with which the submitted Work
instance must
be executed.workListener
- an object which would be notified
when the various Work
processing events (work accepted,
work rejected, work started, work completed) occur.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors or start timeout expiration.WorkCompletedException
- indicates that a
Work
instance has completed execution with an exception.WorkException
long startWork(Work work) throws WorkException
Work
instance for processing. This call
blocks until the Work
instance starts execution
but not until its completion. There is no guarantee on when
the accepted Work
instance would start
execution ie., there is no time constraint to start execution.
(that is, startTimeout=INDEFINITE)work
- The unit of work to be done.
Could be long or short-lived.Work
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.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors.WorkException
long startWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
Work
instance for processing. This call
blocks until the Work
instance starts execution
but not until its completion. There is no guarantee on when
the accepted Work
instance would start
execution ie., there is no time constraint to start execution.work
- The unit of work to be done.
Could be long or short-lived.startTimeout
- a time duration (in milliseconds)
within which the execution of the 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.execContext
- an object containing the execution
context with which the submitted Work
instance must
be executed.workListener
- an object which would be notified
when the various Work
processing events (work accepted,
work rejected, work started, work completed) occur.Work
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.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors or start timeout expiration.WorkException
void scheduleWork(Work work) throws WorkException
Work
instance for processing. This call
does not block and returns immediately once a Work
instance has been accepted for processing. There is no guarantee
on when the submitted Work
instance would start
execution ie., there is no time constraint to start execution.
(that is, startTimeout=INDEFINITE).work
- The unit of work to be done.
Could be long or short-lived.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors.WorkException
void scheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
Work
instance for processing. This call
does not block and returns immediately once a Work
instance has been accepted for processing.work
- The unit of work to be done.
Could be long or short-lived.startTimeout
- a time duration (in milliseconds)
within which the execution of the 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.execContext
- an object containing the execution
context with which the submitted Work
instance must
be executed.workListener
- an object which would be notified
when the various Work
processing events (work accepted,
work rejected, work started, work completed) occur.WorkRejectedException
- indicates that a
Work
instance has been rejected from further processing.
This can occur due to internal factors.WorkException
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.