Package org.eclipse.jetty.util.thread
Class ReservedThreadExecutor
- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.util.thread.ReservedThreadExecutor
-
- All Implemented Interfaces:
java.util.concurrent.Executor,LifeCycle,TryExecutor
@ManagedObject("A pool for reserved threads") public class ReservedThreadExecutor extends AbstractLifeCycle implements TryExecutor
An Executor using preallocated/reserved Threads from a wrapped Executor.Calls to
execute(Runnable)on aReservedThreadExecutorwill either succeed with a Thread immediately being assigned the Runnable task, or fail if no Thread is available.Threads are reserved lazily, with a new reserved thread being allocated from a wrapped
Executorwhen an execution fails. If thesetIdleTimeout(long, TimeUnit)is set to non zero (default 1 minute), then the reserved thread pool will shrink by 1 thread whenever it has been idle for that period.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.TryExecutor
TryExecutor.NoTryExecutor
-
-
Field Summary
-
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
-
Fields inherited from interface org.eclipse.jetty.util.thread.TryExecutor
NO_TRY
-
-
Constructor Summary
Constructors Constructor Description ReservedThreadExecutor(java.util.concurrent.Executor executor, int capacity)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddoStart()voiddoStop()voidexecute(java.lang.Runnable task)intgetAvailable()intgetCapacity()java.util.concurrent.ExecutorgetExecutor()longgetIdleTimeoutMs()intgetPending()voidsetIdleTimeout(long idleTime, java.util.concurrent.TimeUnit idleTimeUnit)Set the idle timeout for shrinking the reserved thread pooljava.lang.StringtoString()booleantryExecute(java.lang.Runnable task)Executes the given task if and only if a reserved thread is available.-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stop
-
-
-
-
Constructor Detail
-
ReservedThreadExecutor
public ReservedThreadExecutor(java.util.concurrent.Executor executor, int capacity)- 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.
-
-
Method Detail
-
getExecutor
public java.util.concurrent.Executor getExecutor()
-
getCapacity
@ManagedAttribute(value="max number of reserved threads", readonly=true) public int getCapacity()
- Returns:
- the maximum number of reserved threads
-
getAvailable
@ManagedAttribute(value="available reserved threads", readonly=true) public int getAvailable()
- Returns:
- the number of threads available to
tryExecute(Runnable)
-
getPending
@ManagedAttribute(value="pending reserved threads", readonly=true) public int getPending()
-
getIdleTimeoutMs
@ManagedAttribute(value="idletimeout in MS", readonly=true) public long getIdleTimeoutMs()
-
setIdleTimeout
public void setIdleTimeout(long idleTime, java.util.concurrent.TimeUnit idleTimeUnit)Set the idle timeout for shrinking the reserved thread pool- Parameters:
idleTime- Time to wait before shrinking, or 0 for no timeout.idleTimeUnit- Time units for idle timeout
-
doStart
public void doStart() throws java.lang.Exception- Overrides:
doStartin classAbstractLifeCycle- Throws:
java.lang.Exception
-
doStop
public void doStop() throws java.lang.Exception- Overrides:
doStopin classAbstractLifeCycle- Throws:
java.lang.Exception
-
execute
public void execute(java.lang.Runnable task) throws java.util.concurrent.RejectedExecutionException- Specified by:
executein interfacejava.util.concurrent.Executor- Specified by:
executein interfaceTryExecutor- Throws:
java.util.concurrent.RejectedExecutionException
-
tryExecute
public boolean tryExecute(java.lang.Runnable task)
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.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classAbstractLifeCycle
-
-