All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.cocoon.components.thread.ThreadPool Maven / Gradle / Ivy

Go to download

Interfaces for thread factories and pools and for execution of background tasks.

There is a newer version: 2.3.0
Show newest version
/*
 * 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
 *
 * @version $Id: ThreadPool.java 489488 2006-12-21 22:38:17Z danielf $
 */
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();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy