001/* 002 * BioJava development code 003 * 004 * This code may be freely distributed and modified under the 005 * terms of the GNU Lesser General Public Licence. This should 006 * be distributed with the code. If you do not have a copy, 007 * see: 008 * 009 * http://www.gnu.org/copyleft/lesser.html 010 * 011 * Copyright for this code is held jointly by the individual 012 * authors. These should be listed in @author doc comments. 013 * 014 * For more information on the BioJava project and its aims, 015 * or to join the biojava-l mailing list, visit the home page 016 * at: 017 * 018 * http://www.biojava.org/ 019 * 020 */ 021 022package org.biojava.utils; 023 024/** 025 * <p><code>ThreadPool</code> specifies basic thread-pooling 026 * operations such that third-party implementations may be used 027 * without requiring changes to BioJava.</p> 028 * 029 * @author Keith James 030 * @since 1.3 031 */ 032public interface ThreadPool 033{ 034 /** 035 * <code>addRequest</code> requests that a <code>Runnable</code> 036 * be scheduled to be run by one of the threads in the pool. 037 * 038 * @param task a <code>Runnable</code>. 039 */ 040 public void addRequest(Runnable task); 041 042 /** 043 * <code>startThreads</code> starts all the threads running and 044 * opens the pool to requests. 045 */ 046 public void startThreads(); 047 048 /** 049 * <code>stopThreads</code> causes all running threads to stop 050 * when their current task is complete. It also closes the pool to 051 * new requests. Requests still queued are not done and the queue 052 * is emptied. 053 */ 054 public void stopThreads(); 055 056 /** 057 * <code>waitForThreads</code> temporarily closes the pool to new 058 * requests until such time as the current request queue has been 059 * emptied and all running tasks completed. 060 */ 061 public void waitForThreads(); 062}