Есть ли ограниченная неблокирующая коллекция в Java?

Единственное, что я могу найти, это BoundedFIFOBuffer, который устарел. Любые другие?

Ответ 1

BoundedFIFOBuffer в коллекциях Apache Commons (что я предполагаю, это то, о чем вы говорите) не устарело, оно только что переместило пакеты. Исходный текст в org.apache.commons.collections устарел и вместо этого был перенесен на org.apache.commons.collections.buffer

Ответ 2

Почему бы просто не использовать LinkedBlockingQueue и использовать неблокирующие методы offer (или add) и poll получить доступ к нему? Вы можете создать его с фиксированной емкостью (т.е. Сделать его ограниченной).

Ответ 4

Недавно я использовал Google Collections. Я думаю, что у вас может быть довольно простое решение Java Generics. Существует класс под названием ForwardingList, который, я думаю, можно легко реализовать эту идею. Очевидно, не так просто, как просто использовать BoundedFifoBuffer (не общий) или ArrayBlockingQueue.

final ArrayList<MyObject> realList = Lists.newArrayList();
final List<MyObject> list = new ForwardingList<MyObject>() {
    protected List<MyObject> delegate() {
        return realList;
    }

    public boolean add(MyObject obj) {
        if(delegate().size() > 100) return false;
        return delegate().add(obj);
    }
};