Interface ManagedTaskListener


public interface ManagedTaskListener
A ManagedTaskListener is used to monitor the state of a task's Future. It can be registered with a ManagedExecutorService using the submit methods and will be invoked when the state of the Future changes. Each listener method will run with unspecified context. All listeners run without an explicit transaction (they do not enlist in the application component's transaction). If a transaction is required, use a jakarta.transaction.UserTransaction instance.

Each listener instance will be invoked within the same process in which the listener was registered. If a single listener is submitted to multiple ManagedExecutorService instances, the listener object may be invoked concurrently by multiple threads.

Each listener method supports a minimum quality of service of at-most-once. A listener is not guaranteed to be invoked due to a process failure or termination.

State Transition Diagram

The following state transition figure and tables describe the possible task lifecycle events that can occur when a ManagedTaskListener is associated with a task. Each method is invoked when the state of the Future moves from one state to another.

Task Listener State Diagram

A. The task runs normally:

Task Listener State Normal
Sequence State Action Listener Next state
1.None submit()taskSubmitted Submitted
2.Submitted About to call run() taskStarting Started
3. Started Exit run() taskDone Done

B. The task is cancelled during taskSubmitted():

Task Listener State Cancelled during taskSubmitted
Sequence State Action Listener Next state
1.None submit() taskSubmitted
Future is cancelled.
Cancelling
2. Cancelling   taskAborted Cancelled
3. Cancelled   taskDone Done

C. The task is cancelled or aborted after submitted, but before started:

Task Listener State Cancelled after submitted but before started
Sequence State Action Listener Next state
1. None submit() taskSubmitted Submitted
2. Submitted cancel() or abort taskAborted Cancelled
3. Cancelled   taskDone Done

D. The task is cancelled when it is starting:

Task Listener State Cancelled when starting
Sequence State Action Listener Next state
1.None submit() taskSubmitted Submitted
2. Submitted About to call run() taskStarting
Future is cancelled.
Cancelling
3. Cancelling   taskAborted Cancelled
4. Cancelled   taskDone Done

Since:
1.0