code: public Object get()
      {
          synchronized(this)
          {
              if (freePool.isEmpty() || usedPool.size() >= capacity)
              {
                  try
                  {
                      wait(1000);
                  } 
                  catch (InterruptedException e)
                  {
                  }
  
                  // The timeout value was reached
                  if (freePool.isEmpty())
                      add(new SimpleDateFormat());
              }
  
              Object o = freePool.get(0);
              freePool.remove(o);
              usedPool.add(o);
              return o;
          }
      }
docs: Retrieve a resource from the pool of free resources.
  @return The next available resource from the pool