All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yahoo.yolean.concurrent.ResourcePool Maven / Gradle / Ivy

Go to download

Library for use in Java components of Vespa. Shared code which do not fit anywhere else.

There is a newer version: 8.441.21
Show newest version
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.function.Supplier;

/**
 * 

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

* * @author baldersheim * @since 5.2 */ public final class ResourcePool implements Iterable { private final Deque pool = new ArrayDeque<>(); private final Supplier factory; public ResourcePool(Supplier factory) { this.factory = factory; } public T alloc() { return pool.isEmpty() ? factory.get() : pool.pop(); } public void free(T e) { pool.push(e); } @Override public Iterator iterator() { return pool.iterator(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy