Как узнать, закончилась ли защелка
У меня есть две темы с countDownLatch
установите в 1, чтобы по окончании первого потока начался второй. И что я хочу сделать, так это то, что, когда второй завершает свою задачу, я хочу получить данные, вычисленные из обоих потоков, для выполнения некоторых операций.
теперь мой вопрос, есть ли способ узнать, если CountDownLatch
объект закончил свою задачу?
Обновить
это безопасно использовать
while (latch.getcountDown()==0) {
// do the calculations on the data processed by the two threads
}
2 ответа
Вы пробовали "присоединиться" к темам. Вместо использования тяжелой защелки соединение может помочь.
Да, когда ваш поток завершает работу и может принять запрос или конкретную задачу, он вызывает метод countDown для защелки. А с другой стороны, в вашем основном потоке (или в потоке координатора) заблокируйте метод await для защелки.
Теперь, когда подчиненные потоки 'x' завершают свою задачу и вызывают countDown, мастер узнает об этом и выходит из режима ожидания и выполняет дальнейшую обработку.