Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Loading
Type
Select type
Sort
Select order
Showing 8 of 8 repositories

Top languages

Loading...

Most used topics

Loading...

AltStyle によって変換されたページ (->オリジナル) /