コルーチンを開始してスレッドの完了を待つサンプル
import kotlinx.coroutines.*
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
val formatter = DateTimeFormatter.ISO_LOCAL_TIME
val time = { formatter.format(LocalDateTime.now()) }
suspend fun getValue(arg :Int): Int {
println("entering getValue(${arg}) at ${time()}")
delay(3000)
println("leaving getValue(${arg}) at ${time()}")
return arg
}
fun main() {
// コルーチンを開始してスレッドの完了を待つ
runBlocking {
// num1とnum2はそれぞれ別スレッドで実行
// asyncで識別されたスレッドはスレッドの完了を識別可能
val num1 = async { getValue(1) }
val num2 = async { getValue(2) }
// awaitによりasyncのスレッドの完了がを待って実行
println("result of num1 + num2 is ${num1.await() + num2.await()} at ${time()}")
}
}
トレーニング > KOTLIN を用いた ANDROID の基本 > インターネット > コルーチン > コルーチン入門 > 4. Kotlin のコルーチン