// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.collections; import java.util.ArrayDeque; import java.util.Deque; import java.util.Iterator; /** *

This implements a simple stack based resource pool. If you are out of resources new are allocated from the * factory.

* * @author baldersheim * TODO: remove on vespa 7 or before * Use com.yahoo.yolean.concurrent.ResourceFactory instead. */ @Deprecated public final class ResourcePool implements Iterable { private final Deque pool = new ArrayDeque<>(); private final ResourceFactory factory; public ResourcePool(ResourceFactory factory) { this.factory = factory; } public final T alloc() { return pool.isEmpty() ? factory.create() : pool.pop(); } public final void free(T e) { pool.push(e); } @Override public Iterator iterator() { return pool.iterator(); } }