- Thread pool pattern
In the thread pool pattern in
programming , a number of threads are created to perform a number of tasks, which are usually organized in a queue. Typically, there are many more tasks than threads. As soon as a thread completes its task, it will request the next task from the queue until all tasks have been completed. The thread can then terminate, or sleep until there are new tasks available.The number of threads used is a parameter that can be tuned to provide the best performance.Additionally, the number of threads can be dynamic based on the number of waiting tasks.For example, a
web server can add threads if numerousweb page requests come in and can remove threads when those requests taper down.The cost of having a larger thread pool is increased resource usage.The algorithm that determines when creating or destroying threads will have an impact on the overall performance:
* create too many threads and resources are wasted and time also wasted creating the unused threads
* destroy too many threads and more time will be spent later creating them again
* creating threads too slowly might result in poor client performance (long wait times)
* destroying threads too slowly may starve other processes of resourcesThe algorithm chosen will depend on the problem and the expected usage patterns.The advantage of using a thread pool over creating a new thread for each task, is that thread creation and destruction overhead is negated, which may result in better performance and better system
stability .When implementing this pattern, the programmer should ensure thread-safety of the queue.
Typically, a thread pool executes on a single processor. However, thread pools are conceptually related to server farms in which a master process distributes tasks to worker processes on different computers, in order to increase the overall throughput.
Embarrassingly parallel problems are highly amenable to this approach.ee also
*
Concurrency pattern
*Parallelization
*Server farm External links
*Article " [http://today.java.net/pub/a/today/2008/01/31/query-by-slice-parallel-execute-join-thread-pool-pattern.html Query by Slice, Parallel Execute, and Join: A Thread Pool Pattern in Java] " by
Binildas C. A.
*Article " [http://www-128.ibm.com/developerworks/java/library/j-jtp0730.html Thread pools and work queues] " byBrian Goetz
*Article " [http://www.codeproject.com/threads/thread_pooling.asp A Method of Worker Thread Pooling] " byPradeep Kumar Sahu
*Article " [http://codeproject.com/threads/work_queue.asp Work Queue] " byUri Twig
*Article " [http://codeproject.com/threads/Joshthreadpool.asp Windows Thread Pooling and Execution Chaining] "
*Article " [http://www.codeproject.com/cs/threads/smartthreadpool.asp Smart Thread Pool] " byAmi Bar
*Article " [http://msdn.microsoft.com/library/en-us/dndotnet/html/progthrepool.asp Programming the Thread Pool in the .NET Framework] " byDavid Carmona
*Article " [http://www.yoda.arachsys.com/csharp/threads/threadpool.shtml The Thread Pool and Asynchronous Methods] " byJon Skeet
*Paper " [http://www.cs.wustl.edu/~schmidt/PDF/OM-01.pdf Optimizing Thread-Pool Strategies for Real-Time CORBA] " byIrfan Pyarali ,Marina Spivak ,Douglas C. Schmidt andRon Cytron
Wikimedia Foundation. 2010.