Class ObjectPool<T>

java.lang.Object
org.cryptomator.cryptolib.common.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