2009-08-17 12 views

Respuesta

13

BoundedFIFOBuffer en Apache Commons Collections (que supongo que es a lo que te refieres) no está en desuso, acaba de mover paquetes. La original en org.apache.commons.collections está en desuso, y en su lugar se ha trasladado a org.apache.commons.collections.buffer

+0

Gracias, de alguna manera llegué a la página obsoleta. – Justin

10

Por qué no utilizar un LinkedBlockingQueue y utilizar los métodos no bloqueantes offer (o add) y poll para acceder a ella? Puede crearlo con una capacidad fija (es decir, para delimitarlo).

+0

Otra buena opción. Gracias. – Justin

+0

Probablemente no valga la pena preocuparse, pero LinkedBlockingQueue seguirá bloqueado. Las versiones futuras de hotspot probablemente puedan optimizar eso. Pero algo a tener en cuenta al crear perfiles más adelante. –

2

He estado usando Google Collections recientemente. Creo que podrías tener una solución Java Generics con bastante facilidad. Hay una clase llamada ForwardingList que creo que podría implementar esta idea con bastante facilidad. Obviamente no es tan fácil como usar BoundedFifoBuffer (no genérico) o 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); 
    } 
}; 
Cuestiones relacionadas