2011-08-08 12 views
5

Tengo dos procesos (productor/consumidor). El primero pone elementos en una Colección, el segundo los lee.Colecciones con varias restricciones (tiempo y tamaño) en Java

Quiero que el segundo proceso no leer cada elemento individual, sino esperar hasta que:

  • Hay al menos N elementos de la colección O
  • Hace El último elemento se recibió T segundos.

¿Hay alguna Colección en Java 5+ que permita este tipo de comportamiento? Estaba pensando en una implementación de Queue, pero solo he encontrado DelayQueue que no es exactamente lo que necesito.

Gracias.

+0

no estoy al tanto de nada igual en colecciones de Java, guayaba no parece tener también. Quizás, sería más fácil si lo intentas por tu cuenta además de, digamos LinkedList, y pregunta aquí si tienes algún problema con él. –

Respuesta

2

Implementaré una colección observable . El segundo proceso escuchará los eventos, indicando que los elementos N están en la colección (eventos basados ​​en el atributo size) y que ningún elemento se ha agregado durante un tiempo determinado (necesita un temporizador que se restablece en cada operación add)

algo como esto (solo la redacción del tamaño requisito):

public ObservableCollection implements Collection { 

    private int sizetrigger; 
    private Collection collection; 
    private Collection<Listener> listeners = new ArrayList<Listener>(); 
    public ObservableCollection(Collection collection) { 
    this.collection = collection; 
    } 

    @Override 
    boolean add(Object element) { 
    collection.add(element); 
    if (size >= sizeTrigger) { 
     fireSizeEvent(); 
    } 
    } 

    private fireSizeEvent() { 
     for(Listener listener:listeners) { 
     listener.thresholdReached(this); 
     } 
    } 

    // addListener, removeListener and implementations of interface methods 
} 
+0

Gracias. También encontré http://commons.apache.org/dormant/events/apidocs/org/apache/commons/events/observable/ObservableCollection.html que también podría ser un buen punto de partida. –

Cuestiones relacionadas