public class QueueingThreadPoolExecutor extends ThreadPoolExecutor
This is a thread pool executor service, which works as a developer would expect it to work. The default
ThreadPoolExecutordoes the following (see the official JavaDoc):
- If fewer than corePoolSize threads are running, the Executor always prefers adding a new thread rather than queuing.
- If corePoolSize or more threads are running, the Executor always prefers queuing a request rather than adding a new thread.
- If a request cannot be queued, a new thread is created unless this would exceed maximumPoolSize, in which case, the task will be rejected.
- corePoolSize is 1, so threads are only created on demand
- If the number of busy threads is smaller than the threadPoolSize, the Executor always prefers adding (or reusing) a thread rather than queuing it.
- If threadPoolSize threads are busy, new requests will be put in a FIFO queue and processed as soon as a thread becomes idle.
- The queue size is unbound, i.e. requests will never be rejected.
- Threads are terminated after being idle for at least 10 seconds.
- Kai Kreuzer - Initial contribution
Nested Class Summary
Method SummaryModifier and TypeMethodDescription
protected voidAdds a new task to the queue
voidThis implementation does not allow setting a custom handler.
Methods inherited from class java.util.concurrent.ThreadPoolExecutor
allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setThreadFactory, shutdown, shutdownNow, terminated, toString
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit
(String name, int threadPoolSize)Allows to subclass QueueingThreadPoolExecutor.
name- the name of the thread pool, will be used as a prefix for the name of the threads
threadPoolSize- the maximum size of the pool
addToQueueprotected void addToQueue
(Runnable runnable)Adds a new task to the queue
runnable- the task to add
setRejectedExecutionHandlerpublic void setRejectedExecutionHandler
(RejectedExecutionHandler handler)This implementation does not allow setting a custom handler.
executepublic void execute