
바삭한 신입들의 동시성 이야기 - Kotlin 편
두줄요약
Android UI 응답성을 위해 Kotlin Coroutine의 Main-Safe 비동기 처리 원리를 설명했습니다. CPS·상태 머신 구조와 Thread 대비 메모리 효율을 함께 비교했습니다.
문제 상황
- 60fps 유지를 위한 16ms 프레임 예산과 네트워크·DB·JSON 파싱 같은 장시간 작업의 충돌
- 메인 스레드 장기 점유로 인한 UI 버벅임과 ANR 위험
구조와 흐름
suspend함수 호출을 Continuation 전달 방식인 CPS 코드로 변환- 중단 지점별 label·지역 변수·결과를 상태 머신에 저장하고
resumeWith로 다음 지점 재개 - Coroutine의 스레드 내 실행과 재개 시 스레드 전환 가능 구조
선택 이유
- 콜백 중첩을 순차 코드 형태로 바꿔 가독성·추론성 향상
- 스레드 블로킹 없이 작업 중단과 재개를 지원해 Main-Safe한 비동기 처리 가능
성능/운영 포인트
- 다수 Coroutine이 제한된 스레드에서 실행되어 불필요한 스레드 생성과 메모리 사용량 감소
- 대량 생성 비교에서 Thread 방식의 높은 스레드 수와 OOM 가능성 확인




