При каких условиях BlockingQueue.take выбрасывает прерванное исключение?

Давайте предположим, что у меня есть поток, который потребляет элементы, созданные другим потоком. Его метод запуска следующий: inQueue - BlockingQueue

boolean shutdown = false;
while (!shutdown) {
    try {
        WorkItem w = inQueue.take();
        w.consume();
    } catch (InterruptedException e) { 
        shutdown = true;
    }
}

Кроме того, другой поток будет сигнализировать, что больше нет рабочих элементов, прерывая этот рабочий поток. Метод take () выдаст прерванное исключение, если ему не нужно блокировать для получения следующего рабочего элемента. то есть, если производитель сообщает, что это сделано, заполняя рабочую очередь, возможно ли случайно оставить некоторые элементы в inQueue или пропустить прерывание?

Ответы на вопрос(5)

Ваш ответ на вопрос