gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:32 24 4
gpt4 key购买 nike

我有两个进程(生产者/消费者)。第一个将元素放入集合中,第二个读取它们。

我希望第二个进程不要读取每个单独的元素,而是等到:

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

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

谢谢。

最佳答案

我会实现一个可观察的集合。第二个进程将监听事件,通知 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
}

关于java - Java 中具有多个约束(时间和大小)的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com