【问题标题】:How to wait for thread to initialize variable in Kotlin?如何等待线程在 Kotlin 中初始化变量?
【发布时间】:2018-12-15 10:26:59
【问题描述】:

我有一个基于 JavaFX 的应用程序,用 Kotlin 编写。 JavaFX 默认在单独的线程中运行,我想确保当 JavaFX 到达它使用该变量的部分时,在主线程中初始化的变量已准备好。

Java 有 wait 和 notify 方法,我会在该变量上使用它们,但它们在 Kotlin 中不可用。

我也研究了 Kotlin 协程,但它们似乎是围绕任务依赖构建的(即一个任务可以等待另一个任务),但它们不能简单地使用变量,并且使用协程而不是线程,即如果我使用协程来协调我的变量,JavaFX 仍然在单独的线程上运行,无法与协程一起协调(或者我错过了什么?)。

【问题讨论】:

  • 我怀疑您可能想查看this implementation 的 JavaFX 特定协程上下文。
  • @yegodm 你能扩展一下吗?我认为这可能是解决方案,我只是不知道从哪里开始实施这个......

标签: multithreading javafx concurrency kotlin kotlinx.coroutines


【解决方案1】:

您仍然可以use wait and notifiy in Kotlin,但不推荐。

你也可以使用CountDownLatch。

【讨论】:

  • CountDownLatch 似乎是一个“愚蠢”的解决方案,但它对于这个问题来说效果很好......
  • CompletableFuture 可能是更好的选择。
猜你喜欢
  • 2019-03-27
  • 2020-04-26
  • 2011-12-05
  • 1970-01-01
  • 2018-03-12
  • 2017-04-29
  • 1970-01-01
  • 2021-07-08
  • 2012-07-13
相关资源
最近更新 更多