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?