検証環境
この記事の内容は、以下の環境で検証しました。
- Intellij IDEA ULTIMATE 2018.2
- Kotlin 1.3.0
- Gradle Projectで作成
- GradleファイルはKotlinで記述(KotlinでDSL)
準備
詳細は下記の準備を参照してください。
https://qiita.com/naoi/items/8abf2cddfc2cb3802daa
Global coroutines are like daemon threads
今回のタイトルは読んだままです。
早速読み進めます。
The following code launches a long-running coroutine in GlobalScope that prints "I'm sleeping" twice a second and then returns from the main function after some delay:
意訳込みですが
サンプルコードでは長期間動作するGlobalScopeのコルーチンを実行しています。1秒間に2回「I'm sleeping」が表示されます。
そのサンプルコードが以下です。
import kotlinx.coroutines.*
fun main() = runBlocking {
//sampleStart
GlobalScope.launch {
repeat(1000) { i ->
println("I'm sleeping $i ...")
delay(500L)
}
}
delay(1300L) // just quit after delay
//sampleEnd
}
確かに、約2秒後ぐらいにメッセージを表示していますね。
もし、GlobalScopeのコルーチンをjoinすると1000実行されるまで動き続けるのでしょう。
タイトルどおり、デーモンみたいですね。
まとめ
GlobalScopeを利用するとデーモンみたいになるといった事がわかりました。