У меня есть несколько потребительских потоков, ожидающих на CountDownLatch
размера 1, используя await()
. У меня есть единственный продюсерский поток, который вызывает countDown()
, когда он успешно завершит.
Это отлично работает, когда ошибок нет.
Однако, если производитель обнаруживает ошибку, я хотел бы, чтобы он мог сигнализировать об ошибке для потребительских потоков. В идеале я мог бы заставить продюсера назвать что-то вроде abortCountDown()
и заставить всех потребителей получить InterruptedException или какое-то другое исключение. Я не хочу называть countDown()
, потому что для этого требуется, чтобы все мои потребительские потоки выполняли дополнительную ручную проверку на успех после их вызова await()
. Я бы предпочел, чтобы они просто получили исключение, которое они уже знают, как обращаться.
Я знаю, что функция прерывания недоступна в CountDownLatch
. Есть ли другой примитив синхронизации, который я могу легко адаптировать для эффективного создания CountDownLatch
, который поддерживает отмену обратного отсчета?