W jakich warunkach BlockingQueue.take rzuci przerwany wyjątek?

Przypuśćmy, że mam wątek, który zużywa elementy wytworzone przez inny wątek. Jego metoda uruchamiania jest następująca: inQueue jest kolejką blokującą

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

Ponadto inny wątek zasygnalizuje, że nie ma już żadnych elementów roboczych, przerywając ten działający wątek. Czy take () rzuci przerwany wyjątek, jeśli nie musi blokować, aby pobrać następny element pracy. tj. jeśli producent sygnalizuje, że wypełnianie kolejki roboczej jest zakończone, czy możliwe jest przypadkowe pozostawienie niektórych elementów w inQueue lub pominięcie przerwania?

questionAnswers(5)

yourAnswerToTheQuestion