Configuration of a BasicThreadPool
The basic thread pool provides a simple thread pooling service
Example Configuration
<mbean code="org.jboss.util.threadpool.BasicThreadPool" name="jboss.jca:service=WorkManagerThreadPool"> <!-- The name that appears in thread names --> <attribute name="Name">WorkManager</attribute> <!-- The maximum amount of work in the queue --> <attribute name="MaximumQueueSize">1024</attribute> <!-- The maximum number of active threads --> <attribute name="MaximumPoolSize">100</attribute> <!-- How long to keep threads alive after their last work (default one minute) --> <attribute name="KeepAliveTime">60000</attribute> </mbean>
Configurable Attributes
Name
- the name that appears on threads in the pool (defaultThreadPool
)
MaximumQueueSize
- the maximum number of requests that are waiting to be executed (default 1024)MinimumPoolSize
- the minimum number of threads to keep active, the pool is not prefilled (default 0 - zero)MaximumPoolSize
- the maximum number of threads that are active (default 100)BlockingMode
- the behaviour when the queue is full (default abort)abort
- a RuntimeException is thrownrun
- the calling thread executes the taskwait
- the calling thread blocks until the queue has room. IMPORTANT: TheMinimumPoolSize
must be > 0 (zero) for this configurationdiscard
- the task is silently discarded without being rundiscardOldest
- check to see if a task is about to complete and enque the new task if possible, else run the task in the calling threadKeepAliveTime
- how long to keep threads when there is nothing to do in milli-seconds (default 60000 == 1 minute)ThreadGroupName
- the thread group the threads are created in (defaultJBoss Pooled Threads
)
Informational
Queue
- the current queue sizePoolNumber
- the internal thread pool numberInstance
- the thread pool instance(org.jboss.util.threadpool.ThreadPool)
/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.util.threadpool; /** * A thread pool. * * @author <a href="mailto:adrian@jboss.org">Adrian Brock</a> * @version $Revision: 1.5 $ */ public interface ThreadPool { // Constants ----------------------------------------------------- // Public -------------------------------------------------------- /** * Stop the pool * * @param immediate whether to shutdown immediately */ public void stop(boolean immediate); /** Wait on the queued tasks to complete. This can only be called after * after stop. * * @throws InterruptedException */ public void waitForTasks() throws InterruptedException; /** Wait on the queued tasks to complete upto maxWaitTime milliseconds. This * can only be called after after stop. * * @param maxWaitTime * @throws InterruptedException */ public void waitForTasks(long maxWaitTime) throws InterruptedException; /** * Run a task wrapper * * @param wrapper the task wrapper */ public void runTaskWrapper(TaskWrapper wrapper); /** * Run a task * * @param task the task * @throws IllegalArgumentException for a null task */ public void runTask(Task task); /** * Run a runnable * * @param runnable the runnable * @throws IllegalArgumentException for a null runnable */ public void run(Runnable runnable); /** * * @param runnable * @param startTimeout * @param completeTimeout */ public void run(Runnable runnable, long startTimeout, long completeTimeout); }
Comments