У меня есть сервер, написанный на Java, который может получать сигнал отключения, когда он прослушивает, обрабатывает и обновляет данные Firebase. Поскольку потоки Firebase являются потоками демона в Java, я хотел добавить некоторую задержку в основной поток, чтобы разрешить выполнение операций записи.java Firebase: delay exit до записи заканчивается
Моя нынешняя идея - подход с защелкой: используйте некоторый параллельный счетчик для отслеживания ожидающих операций записи и дайте основному потоку выйти, если его нет. Счетчик будет обновлен в обратных вызовах, поэтому мне было интересно:
В клиенте Firebase, когда onComplete()
callbacks никогда не вызываются? Существует ли разумная опасность тупика?
Это тот подход, который я буду использовать. Есть ли причина иметь таймер, а в случае, если обратный вызов 'onComplete()' никогда не происходит? Я думаю о чем-то вроде [CountDownLatch.await (long timeout, TimeUnit unit)] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html#await% 28long,% 20java.util.concurrent.TimeUnit% 29). –
onComplete должен всегда запускать либо с условием ошибки, либо с результатом. Единственное исключение из этого было бы, если бы сервер был в автономном режиме и никогда не появлялся в сети снова, и в этом случае сценарий может быть наименьшим из ваших забот :) – Kato
если firebase не удалось аутентифицировать, поток никогда не остановится. Я протестировал, удалив ключ в консоли администратора. –