У меня есть нить, загружающая данные, и я хочу дождаться окончания загрузки, прежде чем загружать данные. Есть ли стандартный способ сделать это?
Подробнее:
У меня есть класс Download, который получает данные из URL-адреса (Сериализованные POJO). Скачать можно запустить и наблюдать. Он отслеживает загруженные байты и размер загрузки. У меня есть индикатор выполнения, который отображает прогресс для пользователя. GUI наблюдает за Download, чтобы обновить индикатор выполнения.
Когда POJO загружен, я хочу получить его и перейти к следующему шагу. Каждый шаг должен ждать завершения предыдущего. Проблема в том, что я не могу придумать, как приостановить приложение и дождаться загрузки. Как только загрузка закончится, я хочу вызвать download.getObject (), который вернет данные в виде объекта. Затем я могу разыграть его и приступить к следующей загрузке.
У меня есть вспомогательный класс, который управляет URL-адресами для загрузки и выполняет все вызовы для загрузки. Этот вызов вызовет getObject и выполнит приведение. Gui вызывает helper.getUser (). helper запускает поток, и я хочу, чтобы он «знал», когда он закончил, чтобы он мог вернуть приведенный объект.
Есть предложения / примеры? Я нахожусь в начальной стадии этого дизайна, поэтому я хочу изменить его.
Спасибо, любезно.
Обновление:
Я следовал http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html#get и использовал модал для блокировки до завершения потока. Код был очень грязным, и мне не нравится такой подход. Я буду продолжать пытаться найти «чистый» способ обработки рабочего процесса загрузки.