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