package toolspack; import java.util.Vector; import java.lang.reflect.*; import java.lang.*; /** * Crea un pool di oggetti che vengono gestiti attraverso acquire e release. * Affinché non si verifichino problemi deve essere usato solo con oggetti privi * di stato interno (ossia che producono sempre gli stessi output con stessi input), * viceversa chi usa gli oggetti del pool deve preoccuparsi di verificarne il loro * stato iniziale. * @author Stefano Ricciarelli * @version 1.2 - Date: 28-06-2002 */ public class ObjectPool { private Object[] instances; private boolean[] busy; private int instanceNumber = 0; /** Da utilizzare solo nel caso in cui gli oggetti che dovranno fare parte del pool * abbiano un costruttore senza argomenti. * @param className nome della classe degli oggetti del pool * @param num numero di istanze degli oggetti di classe className che devono essere presenti nel pool */ //Vedi alla fine i vecchi costruttori commentati //Costruttore. Ovviamente non avrebbe senso renderlo synchronized! Ed infatti il compilatore lo rifiuta //Costruttore nel caso di oggetti con costruttore senza argomenti public ObjectPool(String className, int num) { Class classe; Logger.print(this, "Creazione del pool"); try { classe = Class.forName(className); instanceNumber = num; instances = new Object[instanceNumber]; busy = new boolean[instanceNumber]; int i; for (i=0; i