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
'Language > Kotlin' 카테고리의 다른 글
[1] 왜 코루틴을 써야 할까? – Kotlin이 선택한 비동기 방식 (0) | 2025.06.06 |
---|