// @topic S-0314-10-03-10 Java object pool design pattern
// @brief Program demonstarting ReusablePool class

package objectpooldemo;

public class MainApp {

    public static void main(String[] args) {
        ReusablePool pool = ReusablePool.getInstance();
        
        for ( int count = 0; count < ReusablePool.DEFAULT_POOL_SIZE + 1; ++count ) {
            ReusableVisitor visitor = pool.acquireVisitor();
            if ( visitor == null ) {
                System.out.println( count + ". no more visitors available" );
                break;
            }
            // use the visitor
            System.out.println( count + ". Using visitor " + visitor.hashCode() );
            //pool.releaseVisitor(visitor);
        }
        
        for ( int count = 0; count < ReusablePool.DEFAULT_POOL_SIZE + 1; ++count ) {
            ReusableVisitor visitor = pool.acquireVisitor();
            if ( visitor == null ) {
                System.out.println( count + ". no more visitors available" );
                break;
            }
            // use the visitor
            System.out.println( count + ". Using visitor " + visitor.hashCode() );
            //pool.releaseVisitor(visitor);
        }
        
    }//main
    
}//class MainApp