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