Skip to content
@Koroutine-Study

Koroutine Study

K-루틴

📚 코틀린 코루틴의 정석 완독 스터디

🎯 스터디 목표

  • '코틀린 코루틴의 정석' 책을 완독하며 코루틴의 등장 배경부터 내부 동작 원리, 실전 테스트 방법까지 깊이 있게 학습하는 것을 목표로 합니다.
  • 단순히 API 사용법을 넘어, '왜' 그렇게 동작하는지 근거를 탐구하여 코루틴을 완벽하게 이해하고 실무에 자신감 있게 적용합니다.

🚀 진행 방식

  • 주기: 매주 금요일 21:00 1회 디스코드에서 지정된 범위에 대해 학습한 내용을 공유하고 토론합니다.

  • 발표 및 토론: 매주 발표자를 선정(스장 1명, 스터디원1명)하여 학습 내용을 공유하고, 각자 스터디하며 궁금했던 점이나 논의하고 싶은 주제를 중심으로 자유롭게 토론합니다.

  • 결과물: 각자 학습한 내용이나 토론 결과를 GitHub, Notion, 블로그 등에 정리하여 PR을 생성해 공유합니다.

    // Repo 이름은 맘대로 하시지요ㅎㅎ
    📂 week1
    |- README.md
    |- Test.kt (필요하다면)
    📂 week2
    📂 week3
    
    // README 예시
    
    # 1주차 (1,2장)
    [1주차 내용정리](링크)
    [1주차 발표자료](링크)
    
    

🗓️ 주차별 학습 계획 (변경가능)

1️⃣주차: 코루틴의 등장 배경과 기본 환경 설정 (1장, 2장)

  • 학습 목표: 기존 스레드 기반 동시성 프로그래밍의 한계를 이해하고, 코루틴이 왜 필요한지 근본적인 이유를 파악합니다. 또한, 코루틴을 학습하고 디버깅하기 위한 개발 환경을 완벽하게 구축합니다.
  • 주요 학습 주제:
    • 스레드 기반 멀티태스킹의 한계 (컨텍스트 스위칭, 블로킹)
    • 코루틴이 스레드 블로킹 문제를 극복하는 원리
    • 코루틴 개발 및 디버깅 환경 설정 (Dkotlinx.coroutines.debug 옵션)
    • 첫 코루틴 실행 및 runBlocking, launch 빌더의 기본 개념

2️⃣주차: 코루틴의 핵심 구성 요소 (3장, 4장, 5장)

  • 학습 목표: 코루틴을 실행하고, 제어하며, 결과를 반환받는 가장 기본적인 구성 요소인 Dispatcher, Job, Deferred의 역할과 관계를 이해합니다.
  • 주요 학습 주제:
    • CoroutineDispatcher: 코루틴이 어떤 스레드에서 실행될지 결정하는 역할 (IO, Default, Main)
    • Job: 코루틴의 상태(Lifecycle)를 관리하고 제어하는 핸들 (join, cancel, start)
    • asyncDeferred: 코루틴의 실행 결과를 반환받는 방법 (await, awaitAll)
    • withContext를 사용한 스레드 전환 및 async-await와의 차이점

3️⃣주차: 실행 문맥과 구조화된 동시성 (6장, 7장)

  • 학습 목표: 코루틴의 모든 구성 요소를 담고 있는 CoroutineContext를 이해하고, 코루틴의 핵심 원칙인 '구조화된 동시성'을 통해 안전하게 코루틴을 관리하는 방법을 학습합니다.
  • 주요 학습 주제:
    • CoroutineContext의 구성 요소 (Job, Dispatcher, CoroutineName, CoroutineExceptionHandler)
    • CoroutineContext의 조합(+)과 재구성
    • 구조화된 동시성: 부모-자식 코루틴 관계의 중요성 (취소 전파, 완료 대기)
    • CoroutineScope의 역할과 올바른 사용법
    • GlobalScope 사용을 지양해야 하는 이유

4️⃣주차: 예외 처리와 일시 중단 함수 (8장, 9장)

  • 학습 목표: 구조화된 동시성 안에서 예외가 어떻게 전파되는지 이해하고, SupervisorJob, CoroutineExceptionHandler 등을 사용해 안정적으로 예외를 처리하는 방법을 배웁니다. 또한 코루틴의 핵심인 일시 중단 함수의 원리를 파악합니다.
  • 주요 학습 주제:
    • 코루틴 빌더(launch vs async)에 따른 예외 전파 방식의 차이
    • SupervisorJobsupervisorScope를 이용한 예외 전파 제한
    • CoroutineExceptionHandler를 사용한 중앙 집중식 예외 처리
    • try-catch를 이용한 예외 처리와 주의점
    • *일시 중단 함수(suspend function)**의 정의와 동작 원리

5️⃣주차: 코루틴 심화 및 단위 테스트 (10장, 11장, 12장)

  • 학습 목표: 코루틴의 내부 동작 원리인 Continuation과 스레드 양보(yield) 개념을 이해하고, 공유 상태 문제 및 동기화 방법을 학습합니다. 최종적으로 runTest를 사용하여 코루틴 코드를 정확하게 단위 테스트하는 방법을 익힙니다.
  • 주요 학습 주제:
    • 서브루틴과 코루틴의 근본적인 차이
    • 코루틴의 스레드 양보 (delay, yield)
    • 공유 상태(Mutable State) 사용 시 발생하는 문제와 동기화 방법
    • 코루틴의 동작 원리와 Continuation Passing Style (CPS)
    • 코루틴 테스트 라이브러리 (runTest, TestDispatcher)
    • 가상 시간을 이용한 코루틴 테스트 방법

Popular repositories Loading

  1. .github .github Public

    1

  2. seungjun-gong-coroutine-study seungjun-gong-coroutine-study Public

  3. jongmyoung-kim jongmyoung-kim Public

  4. sohee-jung sohee-jung Public

  5. minseo-song minseo-song Public

  6. minjae-han minjae-han Public

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…