blob: df2a17448314317adfe0b95890b95bb4c380224c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.components.thread;
/**
* The ThreadPool interface gives access to methods needed to inspect and use
* of a pool of threads
*
* @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
* @version CVS $Id: ThreadPool.java 56702 2004-11-05 22:52:05Z giacomo $
*/
public interface ThreadPool
{
//~ Instance fields --------------------------------------------------------
/** ThreadPool block policy ABORT */
String POLICY_ABORT = "ABORT";
/** ThreadPool block policy DISCARD */
String POLICY_DISCARD = "DISCARD";
/** ThreadPool block policy DISCARD-OLDEST */
String POLICY_DISCARD_OLDEST = "DISCARDOLDEST";
/** ThreadPool block policy RUN */
String POLICY_RUN = "RUN";
/** ThreadPool block policy WAIT */
String POLICY_WAIT = "WAIT";
/** The Role name */
String ROLE = ThreadPool.class.getName( );
//~ Methods ----------------------------------------------------------------
/**
* The blocking policy used
*
* @return DOCUMENT ME!
*/
String getBlockPolicy( );
/**
* How long will a thread in this pool be idle before it is allowed to be
* garbage collected
*
* @return maximum idle time
*/
long getKeepAliveTime( );
/**
* How many threads are in this pool at maximum
*
* @return maximum size of pool
*/
int getMaximumPoolSize( );
/**
* Maximum size of the queue
*
* @return current size of queue
*/
int getMaximumQueueSize( );
/**
* How many threads are in this pool at minimum
*
* @return minimum size of pool
*/
int getMinimumPoolSize( );
/**
* The Name of this thread pool
*
* @return The name
*/
String getName( );
/**
* How many threads are currently in this pool
*
* @return current size of pool
*/
int getPoolSize( );
/**
* Get the thread priority used by this pool
*
* @return current size of queue
*/
int getPriority( );
/**
* Current size of the queue.
*
* @return current size of queue. If the size of the queue is not
* maintained by an implementation -1 should be returned.
*/
int getQueueSize( );
/**
* Whether this ThreadPool has a queue
*
* @return Returns true if this ThreadPool has a queue
*/
boolean isQueued( );
/**
* Returns true if a shutDown method has succeeded in terminating all
* threads
*
* @return Whether a shutDown method has succeeded in terminating all
* threads
*/
boolean isTerminatedAfterShutdown( );
/**
* Execute a command using this pool
*
* @param command a {@link Runnable} to execute
*
* @throws InterruptedException In case of interruption
*/
void execute( Runnable command )
throws InterruptedException;
/**
* Terminates all threads possibly awaiting processing all elements
* currently in queue.
*/
void shutdown( );
}