public class

AutoAllocatingLinkedBlockingQueue

extends LinkedBlockingQueue<E>
package com.netflix.astyanax.recipes.storage;

import java.util.concurrent.LinkedBlockingQueue;

import com.google.common.base.Supplier;

@SuppressWarnings("serial")
public class AutoAllocatingLinkedBlockingQueue<T> extends LinkedBlockingQueue<T> {

    public AutoAllocatingLinkedBlockingQueue(int concurrencyLevel) {
        super(concurrencyLevel);
    }

    public T poll(Supplier<T> supplier) {
        T bb = super.poll();
        if (bb == null) {
            return supplier.get();
        }
        return bb;
    }
}