コルーチン スレッド

  • 投稿者:
  • 投稿カテゴリー:その他

コルーチンを開始してスレッドの完了を待つサンプル

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 のコルーチン