Job and Lifecycle

Job

  • 작업의 실행1, 대기2, 취소3, 상태 관리4와 같은 기능을 제공한다.
  • CoroutineBuilder를 통해 Coroutine이 생성될 때 자동으로 생성된다.

Lifecycle

                                      wait children
+-----+ start  +--------+ complete   +-------------+  finish  +-----------+
| New | -----> | Active | ---------> | Completing  | -------> | Completed |
+-----+        +--------+            +-------------+          +-----------+
                 |  cancel / fail       |
                 |     +----------------+
                 |     |
                 V     V
             +------------+                           finish  +-----------+
             | Cancelling | --------------------------------> | Cancelled |
             +------------+                                   +-----------+
  • New: 생성 후 아직 실행되지 않는 상태. CoroutineStart를 LAZY로 설정하면 이 상태가 된다.
  • Active: 실행 중인 상태. 일시 중단된 Job도 활성 상태로 간주된다.
  • Completing: 작업 완료 후 자식 코루틴의 작업 완료를 기다리는 상태.
  • Completed: 자신과 자식 코루틴이 모두 작업을 완료한 상태.
  • Canceling: 취소 완료 후 자식 코루틴의 취소를 기다리는 상태.
  • Cancelled: 자신과 자식 코루틴이 모두 취소를 완료한 상태.

1실행: start()를 통해 생성 상태의 작업을 시작한다.
2대기: join()을 통해 실행 중인 작업이 완료될 때까지 대기한다.
3취소: cancel()을 통해 실행 중인 작업을 취소한다.
4상태 관리: isActive(), isCompleted(), isCancelled() 등.