У меня есть поток, вызывающий внешнюю веб-службу для извлечения некоторых данных. Тем не менее поток должен выйти из метода run, когда определенное условие выполняется в базе данных (количество отсчетов строк определенного типа и посмотреть, равны ли они значению). Я думаю об осуществлении этого и думал о следующих путях.Завершение Java-потока с использованием условия завершения
Обработка резьбы:
run() { while(not [db call to get row count] = expected number) { call web service // wait for some time for the next call? not sure // if this is the way to do it Thread.sleep(200); } }
Иметь наружную резьбу мониторинга состояния базы данных и обновление обработки нити AtomicBoolean variable.The woud проверить эту переменную в цикле в то время как каждый раз.
ProcessingThread:
private Runnable dbStatusThread; run() { while(dbStatusThread.booleanValue == false) { call web service // wait for some time for the next call Thread.sleep(200); } }
Я попытался реализации второй вариант, но даже если булево установлено значение истинно, оно не всегда отражается и бег() не всегда сразу выход , Я читаю JCIP, когда пишу это, но кто-нибудь знает о стандартном способе делать такие вещи? Благодарю.
Будет ли каждый вызов веб-службы фиксированным числом новых строк в БД? Вы порождаете известное количество этих потоков? – Argote
Каждый вызов веб-службы приведет к созданию некоторых строк в db, но числа могут меняться каждый раз. И это нить. – Oxford
Почему вы спите ?? – toto2