2015-07-01 6 views
-2
Calibrate calibrate = new Calibrate(); 
    calibrate.run(); 
    dict = new HashMapStore().getDictionary(); 

Есть ли способ подождать, пока калибровка (gui) будет выполнена, а затем установите dict.Java wait до тех пор, пока не будет установлена ​​переменная

Редактировать: Я уверен, что калибровка находится в одной и той же ветке, однако, если я что-то напечатаю под именем dict = new HashMapStore(). GetDictionary(), он печатает сразу.

+1

ли калибровать начать новую тему или отправить работу сделать в другом потоке? Если нет, строка 'dict = ...' не будет выполнена до завершения 'calibrate.run()'. (Вернее, 'dict = ...' line _always_ запускается после завершения 'calibrate.run()' - единственный вопрос в том, можете ли вы убедиться, что на самом деле выполняется калибровка в этой точке.) – yshavit

+0

Что такое ' Калибровать' точно? Есть ли у него метод, который вы можете вызвать, который возвращает логическое значение, указывающее, выполнено ли это? Еще лучше, есть ли способ зарегистрировать прослушиватель событий, который получит событие, указывающее, что это сделано? – childofsoong

+0

Calibrate - это еще один класс, который запускает gui, тот же поток – NickAtBest

ответ

0

Если Calibrate выполняется в том же потоке, что и в вашей основной программе, то выполнение является синхронным, я имею в виду, что каждое предложение выполняется последовательно, поэтому вам не нужно ничего особенного делать.

С другой стороны, если Calibrete.run() выполняется в другом потоке, возможно, вы можете рассмотреть возможность использования FutureTask.get(), он будет ждать завершения процесса, чтобы продолжить выполнение.

http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html

Смежные вопросы