いいリソースがたくさんあります。
リソースを読むための簡単なまとめと、参考になったリソースをメモしておきます。
概要
コルーチンは軽量なスレッドのようなもの、とよく説明されていますが、個人的には、スレッドのラッパーというのがしっくりきます。
コルーチンを通してスレッドを操作することで、タスク管理を効率化できます。
kotlinコルーチンなどというように、コルーチンはkotlinの言語自体の機能です。
今までJavaを使ってきた我々からすると、時間がかかる処理をする時に、別スレッドに切り出すことはポピュラーな手法かと思います。
なぜなら、そうしないと、時間がかかるタスクがスレッドをブロッキングして、その後ろのタスクが長い間実行されないからです。
またこのスレッド切り出しの結果、コードが各スレッドに散在し、また処理自体も非同期的になるため、処理が追いにくくなる問題がありました。
kotlinのコルーチンは、Javaで我々が手動で行なっていたスレッド上でのタスク管理を、ほとんど代わりにやってくれます。
あるスレッド上で、長いタスク中の空き時間があれば(例えばデータベースからのレスポンスを待っている間など)、そのタスクが終わっていなくても、他の実行可能なタスクを自動で割り当てます。そうやって、スレッドが実際暇になっている時間を最小にします。
デフォルトで3,4種類のスレッドが内部的に用意されていて、ほぼその中で完結するので、新しいスレッドを作る必要がほぼなくなります。(必要ならコルーチン上で新スレッドの作成もできます。)
また、異なるスレッド上の処理でも同期的に1箇所にコードがかけます。
リソース
coroutine自体/androidでの使用
並列処理