Page tags

Add a new page

An ExecutorService that executes each submitted task using one of possibly several pooled threads, normally configured using Executors factory methods.

Thread pools address two different problems: they usually provide improved performance when executing large numbers of asynchronous tasks, due to reduced per-task invocation overhead, and they provide a means of bounding and managing the resources, including threads, consumed when executing a collection of tasks. Each ThreadPoolExecutor also maintains some basic statistics, such as the number of completed tasks.[1]

Programmers can configure the creation for a thread pool using ThreadPoolExecutor constructor. The following parameters can be configure:

corePoolSize: This value (core pool size) tells how many threads will be created before implementation (execution policy) starts looking for existing free thread.

maximumPoolSize: The maximum pool size is the upper bound on how many pool threads can be active at once.

keepAliveTime: If the pool has more than corePoolSize threads and there are more tasks to execute then implementation (execution policy) will terminate all excess threads (maximumPoolSize – coreThreadSize) which are idle for more than keepAliveTime.

workQueue: This is a BlockingQueue used for holding tasks awaiting execution. There is direct relation between work queue and pool sizing.