Class ConcurrentResourcePool<T>

java.lang.Object
com.yahoo.yolean.concurrent.ConcurrentResourcePool<T>
All Implemented Interfaces:
Iterable<T>

public class ConcurrentResourcePool<T> extends Object implements Iterable<T>
A pool of a resource. This create new instances of the resource on request until enough are created to deliver a unique one to all threads needing one concurrently and then reuse those instances in subsequent requests.
Author:
baldersheim
  • Constructor Details

    • ConcurrentResourcePool

      public ConcurrentResourcePool(Supplier<T> factory)
  • Method Details

    • preallocate

      public void preallocate(int instances)
    • alloc

      public final T alloc()
      Allocates an instance of the resource to the requestor. The resource will be allocated exclusively to the requestor until it calls free(instance).
      Returns:
      a reused or newly created instance of the resource
    • free

      public final void free(T e)
      Frees an instance previously acquired bty alloc
    • iterator

      public Iterator<T> iterator()
      Specified by:
      iterator in interface Iterable<T>