CoroutineScope
로 실행launch()
함수로 코루틴을 실행하면 Job
인스턴스가 반환Job
이 실행되는 Scope
(코루틴은 일반적으로 CoroutineScope
로 실행 됨)CoroutineScope
안에 있는 것은 별도의 스레드Scope
확장 함수 (Coroutine Builder
)를 이용하여 코루틴을 만듦launch()
async()
await
을 통해서 받을 수 있고, await
은 작업이 완료될때까지 기다림await()
을 (멈춤 기능) 사용하려면 반드시 코루틴 블럭이나 suspend function 을 선언해야 함withContext()
runBlocking()
일반적으로 launch(), async()를 가장 많이 사용
Dispatcher
: 코루틴을 처리할 적절한 스레드에 작업을 전달Job
: 코루틴의 생명 주기 제어 (생명 주기, 부모 자식 관계 정리 및 관리)Main
: 말 그대로 메인 스레드에 대한 Context이며 UI 갱신이나 Toast 등의 View 작업에 사용 (메인 스레드. 화면 UI 작업 등을 하는 곳)IO
: 네트워킹이나 내부 DB 접근 등 백그라운드에서 필요한 작업을 수행할 때 사용 (네트워크, DB 등 백그라운드에서 필요한 작업을 하는 곳)Default
: 크기가 큰 리스트를 다루거나 필터링을 수행하는 등 무거운 연산이 필요한 작업에 사용 (정렬이나 무거운 계산 작업 등을 하는 곳)start
: 현재 코루틴의 상태를 알아내어 동작 중 = true, 준비/종료 = falsejoin
: 현재 코루틴이 종료되기를 기다림 (async Deferred의 await 와 같은 역할)cancel
: 현재 코루틴을 즉시종료 (Thread의 interrupt 와 같은 역할)cancelAndJoin
: 현재 코루틴을 종료하고 대기cancelChildren
: 현재 Coroutine Scope 내에 작성한 자식 코루틴들을 종료 (부모 코루틴은 종료되지 않음)