我有两个进程(生产者/消费者)。第一个将元素放在Collection中,第二个元素读取它们。
我希望第二个过程不要读取每个元素,而是等到:
Java 5+中是否有任何允许这种行为的集合?我在考虑Queue的实现,但我发现DelayQueue并不是我需要的。
谢谢。
答案 0 :(得分: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
}