Avatar ·

Kotlin中线程(Thread)和协程(Coroutine)有什么区别?

大家好!我开始学习Kotlin和协程,但始终无法理解普通线程(Thread)和协程(Coroutine)之间的根本区别。\n\n似乎两者都能并行或异步执行代码。我读过文档,但写得很复杂。例如,我写了一个简单的线程示例:\n\n```kotlin\nfun main() {\n println("Main starts: ${Thread.currentThread().name}")\n \n val thread = Thread {\n println("Thread working: ${Thread.currentThread().name}")\n Thread.sleep(1000)\n println("Thread done")\n }\n thread.start()\n \n println("Main continues: ${Thread.currentThread().name}")\n thread.join()\n println("Main ends")\n}\n```\n\n以及协程的等效代码:\n\n```kotlin\nfun main() = runBlocking {\n println("Main starts: ${Thread.currentThread().name}")\n \n launch {\n println("Coroutine working: ${Thread.currentThread().name}")\n delay(1000)\n println("Coroutine done")\n }