如何在 Kotlin 中初始化线程?

新手上路,请多包涵

在 Java 中,它通过接受一个实现 runnable 的对象来工作:

 Thread myThread = new Thread(new myRunnable())

其中 myRunnable 是一个实现 Runnable 的类。

但是当我在 Kotlin 中尝试这个时,它似乎不起作用:

 var myThread:Thread = myRunnable:Runnable

原文由 Shubhranshu Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
1 个回答

Kotlin 带有一个标准库函数 thread ,我建议在这里使用:

 public fun thread(
    start: Boolean = true,
    isDaemon: Boolean = false,
    contextClassLoader: ClassLoader? = null,
    name: String? = null,
    priority: Int = -1,
    block: () -> Unit): Thread

你可以像这样使用它:

 thread {
    Thread.sleep(1000)
    println("test")
}

它有许多可选参数,例如通过将 start 设置为 false 不直接启动线程。


备择方案

要初始化类 Thread 的实例,请调用其构造函数:

 val t = Thread()

您还可以传递可选的 Runnable 作为 lambda(SAM 转换),如下所示:

 Thread {
    Thread.sleep(1000)
    println("test")
}

更明确的版本将传递 Runnable 的匿名实现,如下所示:

 Thread(Runnable {
    Thread.sleep(1000)
    println("test")
})

请注意,前面显示的示例仅 创建 Thread 的实例,但实际上并未启动它。为了实现这一点,您需要显式调用 start()

原文由 s1m0nw1 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题