Kotlin Coroutine を軽く使う


import kotlinx.coroutines.*

fun main(args: Array<String>) {
	var job: Job? = null
	runBlocking<Unit> {
		job = GlobalScope.launch {
			println("GHello", 300)
			println("GWorld\n", 500)
		}
	}
	job?.cancel()
	runBlocking<Unit> {
		job = launch {
			println("Hello", 300)
			println("World\n", 500)
		}
	}
	job?.cancel()
}

private suspend fun println(msg: String, millis: Long) = coroutineScope {
	delay(millis)
	println(msg)
}

runBlockingメソッドは引数のブロックを実行中そのスレッドを中断していて比較的どこでも使えるので便利

GlobalScopeは非同期処理の時よく使う

とりあえずメソッドはsuspendとcoroutineScopeを使っておけばなんとかなる

coroutineScopeはrunBlockと似ているけど呼び出し元のJobをオーバーライドしてくれるので非同期処理をまとめて管理するのにちょうどいい

他にもChannelがいい感じに使えそうだと感じた

スポンサーリンク

シェアする

フォローする

スポンサーリンク