我正在使用 DelayQueue。我需要这样做是为了只有在延迟时间过去后才从队列中取出。我还想强制实施容量,就像 BlockingQueue 一样。我似乎找不到这个的 Collections 实现。是否存在这样的实现?如果不存在,最好的实现方式是什么?一种基本的方法是执行以下操作:
public void addSomethingToQueue(Object somethingToAdd){
int capacity = 4;
while(queue.size() >= capacity){
try{
wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
queue.add(somethingToAdd);
}
这意味着每次删除某些内容时都需要调用notify / notifyAll。这是一个相当小的类,所以这是可行的。但这听起来并不好。我也不确定wait / notify是否会导致更多问题?
是否更好地对DelayQueue进行子类化并修改其方法?这感觉有点不安全...