public class CompositeExecutor
extends java.lang.Object
implements java.util.concurrent.Executor
Executor
that encapsulates two underlying executors. Used in cases
where two distinct operation types are being used where sharing threads could
adversely affect the operation of the system. For example, NIO event processing
threads being used for other blocking operations (such as assembling messages).
If a CallerRunsPolicy
rejected execution policy is used, the NIO event thread
might deadlock, and stop processing events.
In order to work in such an environment, the secondary executor must not
have a CallerRunsPolicy
rejected execution policy.
It is generally recommended to use a CallerBlocksPolicy
on both
executors.
Constructor and Description |
---|
CompositeExecutor(java.util.concurrent.Executor primaryTaskExecutor,
java.util.concurrent.Executor secondaryTaskExecutor) |
Modifier and Type | Method and Description |
---|---|
void |
execute(java.lang.Runnable task)
Execute using the primary executor.
|
void |
execute2(java.lang.Runnable task)
Execute using the secondary executor.
|
public CompositeExecutor(java.util.concurrent.Executor primaryTaskExecutor, java.util.concurrent.Executor secondaryTaskExecutor)
public void execute(java.lang.Runnable task)
execute
in interface java.util.concurrent.Executor
task
- the task to run.public void execute2(java.lang.Runnable task)
task
- the task to run.