Language/Kotlin

Kotlin Coroutine 핵심 키워드 & 함수 정리

Raconer 2025. 6. 6. 16:39
728x90

✅ 1. 키워드(예약어)

키워드 설명
suspend 일시 중단 가능한 함수 정의. 코루틴 내부에서만 호출 가능
* “이 함수는 중간에 멈췄다가, 나중에 다시 이어서 실행할 수 있어” 라고 선언하는 것.

✅ 2. 코루틴 빌더 함수

함수 설명
runBlocking 현재 스레드를 블로킹하며 코루틴 실행 (main/test 진입점에 사용)
launch 결과 없이 코루틴 실행. fire-and-forget 작업에 적합
async Deferred 결과 반환. await()으로 값 획득 가능

✅ 3. 스코프 관련 함수

함수 설명
coroutineScope 모든 하위 코루틴이 끝날 때까지 기다림. 예외 전파됨
supervisorScope 하위 코루틴 예외가 다른 코루틴에 영향을 주지 않음
CoroutineScope 코루틴 실행 환경(Context)을 정의하는 인터페이스

✅ 4. Context 제어 함수

함수 설명
withContext 지정된 Dispatcher로 컨텍스트 전환 후 실행
delay() 실제 스레드를 블로킹하지 않고 코루틴만 일시 중단

✅ 5. Dispatcher 및 컨텍스트

상수 설명
Dispatchers.Default CPU 집중 작업용 (멀티코어 병렬 처리)
• 기본적으로 CPU 코어 수 만큼의 스레드 풀을 가진다 (parallelism = Runtime.getRuntime().availableProcessors())
• 따라서 멀티코어 시스템이면 병렬 실행도 가능하지만, 코루틴 자체는 동시성 컨셉으로 설계됨
• 동시성 → 병렬성으로 확장 가능한 구조라고 보면 정확함
Dispatchers.IO I/O 작업(DB, 파일 등)에 적합
Dispatchers.Unconfined 현재 스레드에서 시작, 이후 컨텍스트에 따라 동작
Dispatchers.Main UI 스레드 (Android 등에서 사용)

✅ 6. Job 및 Deferred

클래스 설명
Job 코루틴의 생명 주기 제어 객체 (cancel(), join() 등)
Deferred async로 생성된 결과 반환용 Job. await()으로 결과 받음

🧠 요약

유형 항목 예시
키워드 suspend 일시 중단 함수
* “이 함수는 중간에 멈췄다가, 나중에 다시 이어서 실행할 수 있어” 라고 선언하는 것.
빌더 함수 launch, async, runBlocking 코루틴 실행
스코프 함수 coroutineScope, supervisorScope 구조적 동시성 제어
컨텍스트 함수 withContext, delay 실행 위치 전환
Dispatcher Default, IO, Unconfined, Main 스레드 전략
제어 객체 Job, Deferred 취소, 결과 관리
728x90