Я использую DelayQueue для хранения предметов.В некотором параллельном сценарии потребитель не может получить никаких предметов.Пример кода приведен ниже.Любой совет может быть полезным.
private BlockingQueue<Item> queue = new DelayQueue<>();
producer
{
if (!queue.contains(item)) {
queue.offer(tiem);
}
}
consumer implements Runnable {
public void run() {
while (true) {
item = queue.take().getItem();
}
}
}