- '코틀린 코루틴의 정석' 책을 완독하며 코루틴의 등장 배경부터 내부 동작 원리, 실전 테스트 방법까지 깊이 있게 학습하는 것을 목표로 합니다.
- 단순히 API 사용법을 넘어, '왜' 그렇게 동작하는지 근거를 탐구하여 코루틴을 완벽하게 이해하고 실무에 자신감 있게 적용합니다.
-
주기: 매주 금요일 21:00 1회 디스코드에서 지정된 범위에 대해 학습한 내용을 공유하고 토론합니다.
-
발표 및 토론: 매주 발표자를 선정(스장 1명, 스터디원1명)하여 학습 내용을 공유하고, 각자 스터디하며 궁금했던 점이나 논의하고 싶은 주제를 중심으로 자유롭게 토론합니다.
-
결과물: 각자 학습한 내용이나 토론 결과를 GitHub, Notion, 블로그 등에 정리하여 PR을 생성해 공유합니다.
// Repo 이름은 맘대로 하시지요ㅎㅎ 📂 week1 |- README.md |- Test.kt (필요하다면) 📂 week2 📂 week3// README 예시 # 1주차 (1,2장) [1주차 내용정리](링크) [1주차 발표자료](링크)
- 학습 목표: 기존 스레드 기반 동시성 프로그래밍의 한계를 이해하고, 코루틴이 왜 필요한지 근본적인 이유를 파악합니다. 또한, 코루틴을 학습하고 디버깅하기 위한 개발 환경을 완벽하게 구축합니다.
- 주요 학습 주제:
- 스레드 기반 멀티태스킹의 한계 (컨텍스트 스위칭, 블로킹)
- 코루틴이 스레드 블로킹 문제를 극복하는 원리
- 코루틴 개발 및 디버깅 환경 설정 (
Dkotlinx.coroutines.debug옵션) - 첫 코루틴 실행 및
runBlocking,launch빌더의 기본 개념
- 학습 목표: 코루틴을 실행하고, 제어하며, 결과를 반환받는 가장 기본적인 구성 요소인
Dispatcher,Job,Deferred의 역할과 관계를 이해합니다. - 주요 학습 주제:
CoroutineDispatcher: 코루틴이 어떤 스레드에서 실행될지 결정하는 역할 (IO, Default, Main)Job: 코루틴의 상태(Lifecycle)를 관리하고 제어하는 핸들 (join,cancel,start)async와Deferred: 코루틴의 실행 결과를 반환받는 방법 (await,awaitAll)withContext를 사용한 스레드 전환 및async-await와의 차이점
- 학습 목표: 코루틴의 모든 구성 요소를 담고 있는
CoroutineContext를 이해하고, 코루틴의 핵심 원칙인 '구조화된 동시성'을 통해 안전하게 코루틴을 관리하는 방법을 학습합니다. - 주요 학습 주제:
CoroutineContext의 구성 요소 (Job, Dispatcher, CoroutineName, CoroutineExceptionHandler)CoroutineContext의 조합(+)과 재구성- 구조화된 동시성: 부모-자식 코루틴 관계의 중요성 (취소 전파, 완료 대기)
CoroutineScope의 역할과 올바른 사용법GlobalScope사용을 지양해야 하는 이유
- 학습 목표: 구조화된 동시성 안에서 예외가 어떻게 전파되는지 이해하고,
SupervisorJob,CoroutineExceptionHandler등을 사용해 안정적으로 예외를 처리하는 방법을 배웁니다. 또한 코루틴의 핵심인 일시 중단 함수의 원리를 파악합니다. - 주요 학습 주제:
- 코루틴 빌더(
launchvsasync)에 따른 예외 전파 방식의 차이 SupervisorJob과supervisorScope를 이용한 예외 전파 제한CoroutineExceptionHandler를 사용한 중앙 집중식 예외 처리try-catch를 이용한 예외 처리와 주의점- *일시 중단 함수(suspend function)**의 정의와 동작 원리
- 코루틴 빌더(
- 학습 목표: 코루틴의 내부 동작 원리인
Continuation과 스레드 양보(yield) 개념을 이해하고, 공유 상태 문제 및 동기화 방법을 학습합니다. 최종적으로runTest를 사용하여 코루틴 코드를 정확하게 단위 테스트하는 방법을 익힙니다. - 주요 학습 주제:
- 서브루틴과 코루틴의 근본적인 차이
- 코루틴의 스레드 양보 (
delay,yield) - 공유 상태(Mutable State) 사용 시 발생하는 문제와 동기화 방법
- 코루틴의 동작 원리와 Continuation Passing Style (CPS)
- 코루틴 테스트 라이브러리 (
runTest,TestDispatcher) - 가상 시간을 이용한 코루틴 테스트 방법