У меня есть поток, который имеет очередь входящих заданий (a LinkedList, содержащий описания должностных обязанностей). Поток блокируется с wait() в очереди, когда нет работы для работы. Внешний диспетчер задания пробуждает его с помощью notify(), когда он помещает новые задания в очередь.
При выключении моей программы я вызываю interrupt() в Thread. Это вызывает InterruptedException, когда Thread ожидает выполнения заданий в wait(). Мой вопрос: что произойдет, если я прерву поток, пока он не блокирует, а выполняет какую-то работу, обработанный элемент был последним в очереди (так что очередь теперь пуста), а выполнение проходит проверку isInterrupted() до прерывания установлен флаг, чтобы он снова вызывал wait()? Будет ли он бросать InterruptedException, потому что прерванный флаг уже установлен или поток ожидает навсегда, потому что новые задания никогда не появятся в очереди, и некому прервать ожидание?