練習題目,將下面這段程式由 Thread 改成 coroutine 。
出處:https://developer.android.com/codelabs/basic-android-kotlin-training-introduction-coroutines#4
fun main() {
val states = arrayOf("Starting", "Doing Task 1", "Doing Task 2", "Ending")
repeat(3) {
Thread {
println("${Thread.currentThread()} has started")
for (i in states) {
println("${Thread.currentThread()} - $i")
Thread.sleep(50)
}
}.start()
}
}
練習解答一:
import kotlinx.coroutines.*
val states = arrayOf("Starting", "Doing Task 1", "Doing Task 2", "Ending")
suspend fun generateThread(){
println("${Thread.currentThread()} has started")
for (i in states) {
println("${Thread.currentThread()} - $i")
delay(100)
}
}
fun main() {
runBlocking {
repeat(3){
async {generateThread()}
}
}
}
練習解答二:
fun main() {
val states = arrayOf("Starting", "Doing Task 1", "Doing Task 2", "Ending")
repeat(3) {
GlobalScope.launch {
println("${Thread.currentThread()} has started")
for (i in states) {
println("${Thread.currentThread()} - $i")
delay(50)
}
}
}
}
可以在 Kotlin Playground 裡面線上練習真方便。
發佈留言