Как дождаться, пока поток инициализирует переменную в Котлине?

У меня есть приложение на основе JavaFX, написанное на Kotlin. JavaFX по умолчанию работает в отдельном потоке, и я хочу убедиться, что переменная, которая инициализируется в основном потоке, готова, когда JavaFX достигает той части, где она использует эту переменную.

В Java есть методы wait и notify, которые я бы использовал для этой переменной, но они недоступны в Kotlin.

Я также изучал сопрограммы Kotlin, но они, похоже, построены вокруг зависимости задач (то есть одна задача может ждать другой), но они не работают так просто с переменными и используют сопрограммы вместо потоков, то есть если я использую сопрограммы чтобы координировать мои переменные, JavaFX по-прежнему работает в отдельном потоке, который не может быть скоординирован вместе с сопрограммами (или я что-то упустил?).


person Aleksandar Stefanović    schedule 06.07.2018    source источник
comment
Я подозреваю, что вы могли бы захотеть проверить эту реализацию специфичного для JavaFX контекста сопрограмм.   -  person yegodm    schedule 06.07.2018
comment
@yegodm, можешь ли ты подробнее рассказать об этом? Я думаю, что это могло бы быть решением, просто не знаю, с чего начать это реализовывать ...   -  person Aleksandar Stefanović    schedule 07.07.2018


Ответы (1)


Вы по-прежнему можете использовать wait и notifiy в Kotlin, хотя это не рекомендуется.

Вы также можете использовать CountDownLatch.

person jingx    schedule 06.07.2018
comment
CountDownLatch кажется глупым решением, но для этой проблемы оно работает достаточно хорошо ... - person Aleksandar Stefanović; 07.07.2018
comment
CompletableFuture мог бы быть лучшим выбором. - person yegodm; 07.07.2018