Java中具有多个约束(时间和大小)的集合

Gui*_*ido 5 java collections

我有两个进程(生产者/消费者).第一个将元素放在Collection中,第二个元素读取它们.

我希望第二个过程不要读取每个元素,但要等到:

  • 集合OR中至少有N个元素
  • 最后一个元素是在T秒前收到的.

Java 5+中是否有任何允许这种行为的集合?我在考虑Queue的实现,但我发现DelayQueue并不是我需要的.

谢谢.

And*_*s_D 2

我会实现一个可观察的集合。第二个进程将侦听事件,发出信号通知N元素位于集合中(基于size属性的事件)并且在一定时间内没有添加任何元素(需要一个计时器,在每次add操作时都会重置)

像这样的东西(只是起草尺寸要求):

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
}
Run Code Online (Sandbox Code Playgroud)