Class ObjectPool<T>

  • Type Parameters:
    T - Type of the pooled objects

    public class ObjectPool<T>
    extends Object
    A simple object pool for resources that are expensive to create but are needed frequently.

    Example Usage:

    
         Supplier<Foo> fooFactory = () -> new Foo();
         ObjectPool<Foo> fooPool = new ObjectPool(fooFactory);
         try (ObjectPool.Lease<Foo> lease = fooPool.get()) { // attempts to get a pooled Foo or invokes factory
             lease.get().foo(); // exclusively use Foo instance
         } // releases instance back to the pool when done