Unter welchen Bedingungen wird BlockingQueue.take eine unterbrochene Ausnahme auslösen?

Nehmen wir an, ich habe einen Thread, der von einem anderen Thread erzeugte Elemente verbraucht. Die Ausführungsmethode lautet wie folgt, wobei inQueue eine BlockingQueue ist

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

Außerdem signalisiert ein anderer Thread, dass keine Arbeitselemente mehr vorhanden sind, indem dieser laufende Thread unterbrochen wird. Wird eine unterbrochene Ausnahme auslösen, wenn sie nicht blockiert werden muss, um das nächste Arbeitselement abzurufen. d.h., wenn der Produzent signalisiert, dass das Füllen der Arbeitswarteschlange abgeschlossen ist, ist es möglich, versehentlich einige Elemente in der Warteschlange zu belassen oder den Interrupt zu verpassen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage