Я использую DelayQueue. Мне нужно использовать это, чтобы брать из очереди только после того, как задержка прошла. Я также хочу усилить емкость, очень похожую на BlockingQueue. Я не могу найти реализацию коллекций этого. Один существует? Если нет, каков наилучший способ его реализации? Основным подходом было бы сделать что-то вроде этого:
public void addSomethingToQueue(Object somethingToAdd){
int capacity = 4;
while(queue.size() >= capacity){
try{
wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
queue.add(somethingToAdd);
}
Это будет означать вызов notify / notifyAll каждый раз, когда что-то удаляется. Это довольно маленький класс, так что это выполнимо. Это не звучит здорово, хотя. И я не уверен, что ожидание / уведомление может вызвать дальнейшие проблемы?
Было бы лучше подкласса DelayQueue и возиться с его методами? Чувствуется немного хитро ...