0. 정의

Job | kotlinx.coroutines – Kotlin Programming Language

Coroutine 작업 하나를 의미하는 객체.

Kotlin Coroutines에서는 Coroutine을 컨트롤하기 위한 객체인 Job을 제공한다.

Job은 1개부터 여러 개에 이르는 Coroutine의 동작을 제어할 수 있다!


1. Job의 상태

Coroutines Job은 coroutines의 6가지 상태를 가지고 있다.

State isActive isCompleted isCancelled
New (optional initial state) false false false
Active (default initial state) true false false
Completing (transient state) true false false
Cancelling (transient state) false false true
Cancelled (final state) false true true
Completed (final state) false true false

위 Job을 바탕으로 Coroutine의 상태를 확인, 제어할 수 있다.

이 때 job.cancel()을 호출하면 해당 Job은 즉시 취소 상태로 가게 된다.

 /* Kotlin 공식 레퍼런스 中 */
                                  wait children
+-----+ start  +--------+ complete   +-------------+  finish  +-----------+
| New | -----> | Active | ---------> | Completing  | -------> | **Completed** |
+-----+        +--------+            +-------------+          +-----------+
                 |  cancel / fail       |
                 |     +----------------+
                 |     |
                 V     V
             +------------+                           finish  +-----------+
             | Cancelling | --------------------------------> | **Cancelled** |
             +------------+                                   +-----------+


2. Job의 기능