Em que condições o BlockingQueue.take lançará uma exceção interrompida?

Vamos supor que eu tenha um thread que consuma itens produzidos por outro thread. Seu método de execução é o seguinte, com inQueue sendo um BlockingQueue

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

Além disso, um thread diferente sinalizará que não há mais itens de trabalho interrompendo esse thread em execução. Levará () uma exceção interrompida se não precisar bloquear para recuperar o próximo item de trabalho. ou seja, se o produtor sinaliza que é feito o preenchimento da fila de trabalho, é possível deixar acidentalmente alguns itens em inQueue ou perder a interrupção?

questionAnswers(5)

yourAnswerToTheQuestion