Class ReservedThreadExecutor
java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.util.thread.ReservedThreadExecutor
- All Implemented Interfaces:
Executor, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle, TryExecutor
@ManagedObject("A pool for reserved threads")
public class ReservedThreadExecutor
extends ContainerLifeCycle
implements TryExecutor, Dumpable
A TryExecutor using pre-allocated/reserved threads from an external Executor.
Calls to tryExecute(Runnable) on ReservedThreadExecutor will either
succeed with a reserved thread immediately being assigned the task, or fail if
no reserved thread is available.
Threads are reserved lazily, with new reserved threads being allocated from the external
Executor passed to the constructor. Whenever 1 or more reserved threads have been
idle for more than getIdleTimeoutMs() then one reserved thread will return to
the external Executor.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface Container
Container.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainerNested classes/interfaces inherited from interface LifeCycle
LifeCycle.ListenerNested classes/interfaces inherited from interface TryExecutor
TryExecutor.NoTryExecutor -
Field Summary
Fields inherited from interface TryExecutor
NO_TRY -
Constructor Summary
ConstructorsConstructorDescriptionReservedThreadExecutor(Executor executor, int capacity) ReservedThreadExecutor(Executor executor, int capacity, int minSize) ReservedThreadExecutor(Executor executor, int capacity, int minSize, int maxPending) -
Method Summary
Modifier and TypeMethodDescriptionvoiddoStart()Starts the managed lifecycle beans in the order they were added.voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.voiddump(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.voidintintlongintDeprecated.static intreservedThreads(Executor executor, int capacity) Get the heuristic number of reserved threads.voidsetIdleTimeout(long idleTime, TimeUnit idleTimeUnit) Set the idle timeout for shrinking the reserved thread pooltoString()booleantryExecute(Runnable task) Executes the given task if and only if a reserved thread is available.Methods inherited from class ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeansMethods inherited from class AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stopMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Container
getCachedBeans, getEventListenersMethods inherited from interface Dumpable.DumpableContainer
isDumpable
-
Constructor Details
-
ReservedThreadExecutor
- Parameters:
executor- The executor to use to obtain threadscapacity- The number of threads that can be reserved. If less than 0 then capacity is calculated based on a heuristic from the number of available processors and thread pool type.
-
ReservedThreadExecutor
- Parameters:
executor- The executor to use to obtain threadscapacity- The number of threads that can be reserved. If less than 0 then capacity is calculated based on a heuristic from the number of available processors and thread pool type.minSize- The minimum number of reserve Threads that the algorithm tries to maintain, or -1 for a heuristic value.
-
ReservedThreadExecutor
- Parameters:
executor- The executor to use to obtain threadscapacity- The number of threads that can be reserved. If less than 0 then capacity is calculated based on a heuristic from the number of available processors and thread pool type.minSize- The minimum number of reserve Threads that the algorithm tries to maintain, or -1 for a heuristic value.maxPending- The maximum number of reserved Threads to start, or -1 for no limit.
-
-
Method Details
-
reservedThreads
Get the heuristic number of reserved threads.- Parameters:
executor- The executor to use to obtain threadscapacity- The number of threads to preallocate, If less than 0 then capacity is calculated based on a heuristic from the number of available processors and thread pool size.- Returns:
- the number of reserved threads that would be used by a ReservedThreadExecutor constructed with these arguments.
-
getExecutor
-
getCapacity
- Returns:
- the maximum number of reserved threads
-
getAvailable
- Returns:
- the number of threads available to
tryExecute(Runnable)
-
getPending
@ManagedAttribute(value="pending reserved threads (deprecated)", readonly=true) @Deprecated public int getPending()Deprecated. -
getIdleTimeoutMs
-
setIdleTimeout
Set the idle timeout for shrinking the reserved thread pool- Parameters:
idleTime- Time to wait before shrinking, or 0 for default timeout.idleTimeUnit- Time units for idle timeout
-
doStart
Description copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
doStartin classContainerLifeCycle- Throws:
Exception- If there was a problem starting. Will cause a transition to FAILED state
-
doStop
Description copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStopin classContainerLifeCycle- Throws:
Exception- If there was a problem stopping. Will cause a transition to FAILED state
-
execute
- Specified by:
executein interfaceExecutor- Specified by:
executein interfaceTryExecutor- Throws:
RejectedExecutionException
-
tryExecute
Executes the given task if and only if a reserved thread is available.
- Specified by:
tryExecutein interfaceTryExecutor- Parameters:
task- the task to run- Returns:
- true if and only if a reserved thread was available and has been assigned the task to run.
-
dump
Description copied from interface:DumpableDump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
dumpin interfaceDumpable- Overrides:
dumpin classContainerLifeCycle- Parameters:
out- The appendable to dump toindent- The indent to apply after any new lines.- Throws:
IOException- if unable to write to Appendable
-
toString
- Overrides:
toStringin classAbstractLifeCycle
-