1 /* 2 * ################################################################ 3 * 4 * ProActive: The Java(TM) library for Parallel, Distributed, 5 * Concurrent computing with Security and Mobility 6 * 7 * Copyright (C) 1997-2002 INRIA/University of Nice-Sophia Antipolis 8 * Contact: proactive-support@inria.fr 9 * 10 * This library is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU Lesser General Public 12 * License as published by the Free Software Foundation; either 13 * version 2.1 of the License, or any later version. 14 * 15 * This library is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * Lesser General Public License for more details. 19 * 20 * You should have received a copy of the GNU Lesser General Public 21 * License along with this library; if not, write to the Free Software 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 23 * USA 24 * 25 * Initial developer(s): The ProActive Team 26 * http://www.inria.fr/oasis/ProActive/contacts.html 27 * Contributor(s): 28 * 29 * ################################################################ 30 */ 31 package org.objectweb.proactive.core.util; 32 33 /** 34 * <p> 35 * A class implementing this interface provides a sort of store where threads like 36 * customers can enter and exit. The store can open and close. 37 * The rule are that no thread can enter when the store is closed and that the 38 * store cannot close until all threads already inside exit. 39 * Like in any other stores, once the store is closing, no more Thread can enter. 40 * </p> 41 * 42 * @author ProActive Team 43 * @version 1.0, 2002/05 44 * @since ProActive 0.9.2 45 */ 46 public interface ThreadStore { 47 48 /** 49 * Returns how many threads are in the store. This method is non blocking. 50 * @return how many threads are in the store. 51 */ 52 public int threadCount(); 53 54 55 /** 56 * Signals that a thread wants to enter the store. If the store is opened 57 * the call is non blocking. 58 * If the store is closed or closing the call is blocking until the store 59 * opens. 60 */ 61 public void enter(); 62 63 64 /** 65 * Signals that a thread exited the store. The call is non blocking. 66 */ 67 public void exit(); 68 69 70 /** 71 * Closes the store. The call is blocking until all threads 72 * currently in the store exit. No other thread can enter the store 73 * after this call. 74 * Therefore the store can be closing or closed. 75 */ 76 public void close(); 77 78 79 /** 80 * Opens the store. The call is non blocking. It allows the thread waiting to 81 * enter the store to proceed. 82 */ 83 public void open(); 84 85 } 86