¿Cuál es la diferencia entre Thread y Coroutine en Kotlin?
¡Hola a todos! Empecé a estudiar Kotlin y coroutines, pero no puedo entender la diferencia fundamental entre un Thread normal y una Coroutine.
Ambos parecen permitir ejecutar código en paralelo o de forma asíncrona. Leí la documentación, pero está escrita de manera complicada. Por ejemplo, escribí un ejemplo simple con threads:
```kotlin
fun main() {
println("Main starts: ${Thread.currentThread().name}")
val thread = Thread {
println("Thread working: ${Thread.currentThread().name}")
Thread.sleep(1000)
println("Thread done")
}
thread.start()
println("Main continues: ${Thread.currentThread().name}")
thread.join()
println("Main ends")
}
```
Y el equivalente con coroutines:
```kotlin
fun main() = runBlocking {
println("Main starts: ${Thread.currentThread().name}")
launch {
println("Coroutine working: ${Thread.currentThread().name}")
delay(1000)
println("Coroutine done")
}
println("Main conti