java - 如何在 Kotlin 中初始化一个线程?

在 Java 中,它通过接受实现可运行的对象来工作:

Thread myThread = new Thread(new myRunnable())

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

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

var myThread:Thread = myRunnable:Runnable

最佳答案

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()

https://stackoverflow.com/questions/46505528/

相关文章:

java - 错误 :Kotlin: Unsupported plugin option: org.

android - 应用程序模块中引用的 android 库模块的“ Unresolved 引用”错

android - 为全屏 Activity 摆脱不必要的根布局

android - 延迟对 Kotlin 协程进行单元测试

android - 如何在 kotlin 协程上进行指数退避重试

android - 将 LiveData 与数据绑定(bind)一起使用

kotlin - 在 Kotlin 中对可空整数使用 "greater than"、 "less t

android - kotlin 'onCreate' 不会覆盖任何内容

javafx - Kotlin 。基本 JavaFX 应用程序

android - 如何混淆我用 kotlin 编码的 sdk(并摆脱元数据)