코틀린 코루틴의 정석

조세영
452p
구매 가능한 곳

저자/역자

목차

1장. 스레드 기반 작업의 한계와 코루틴의 등장 1.1. JVM 프로세스와 스레드 1.2. 단일 스레드의 한계와 멀티 스레드 프로그래밍 1.2.1. 단일 스레드 애플리케이션의 한계 1.2.2. 멀티 스레드 프로그래밍을 통한 단일 스레드의 한계 극복 1.3. 스레드, 스레드풀을 사용한 멀티 스레드 프로그래밍 1.3.1. Thread 클래스를 사용하는 방법과 한계 1.3.2. Executor 프레임웍을 통해 스레드풀 사용하기 1.3.3. 이후의 멀티 스레드 프로그래밍과 한계 1.4. 기존 멀티 스레드 프로그래밍의 한계와 코루틴 1.4.1. 기존 멀티 스레드 프로그래밍의 한계 1.4.2. 코루틴은 스레드 블로킹 문제를 어떻게 극복하는가? 1.5. 요약 2장. 코루틴 개발 환경 설정 2.1. 인텔리제이 아이디어 설치 및 둘러보기 2.1.1. 인텔리제이 아이디어 설치하기58 2.2. 코틀린 프로젝트 생성하고 화면 구성 살펴보기 2.2.1. 프로젝트 생성하기 2.2.2. IDE 구성 살펴보기 2.3. 첫 코루틴 실행하기 2.3.1. 코루틴 라이브러리 추가하기 2.3.2. 첫 코루틴 실행하기 2.4. 코루틴 디버깅 환경 설정하기 2.4.1. 실행 중인 스레드 출력하기 2.4.2. 실행 중인 코루틴 이름 출력하기 2.4.3. launch 사용해 코루틴 추가로 실행하기 2.4.4. CoroutineName 사용해 코루틴에 이름 추가하기 2.5. 요약 3장. CoroutineDispatcher 3.1. CoroutineDispatcher란 무엇인가? 3.1.1. CoroutineDispatcher의 동작 살펴보기 3.1.2. CoroutineDispatcher의 역할 3.2. 제한된 디스패처와 무제한 디스패처 3.3. 제한된 디스패처 생성하기 3.3.1. 단일 스레드 디스패처 만들기 3.3.2. 멀티 스레드 디스패처 만들기 3.4. CoroutineDispatcher 사용해 코루틴 실행하기 3.4.1. launch의 파라미터로 CoroutineDispatcher 사용하기 3.4.2. 부모 코루틴의 CoroutineDispatcher 사용해 자식 코루틴 실행하기 3.5. 미리 정의된 CoroutineDispatcher 3.5.1. Dispatchers.IO 3.5.2. Dispatchers.Default 3.5.3. limitedParallelism 사용해 Dispatchers.Default 스레드 사용 제한하기 3.5.4. 공유 스레드풀을 사용하는 Dispatchers.IO와 Dispatchers.Default4 3.5.5. Dispatchers.Main 3.6. 요약 4장. 코루틴 빌더와 Job 4.1. join을 사용한 코루틴 순차 처리 4.1.1. 순차 처리가 안 될 경우의 문제 4.1.2. join 함수 사용해 순차 처리하기 4.2. joinAll을 사용한 코루틴 순차 처리 4.2.1. joinAll 함수 4.2.2. joinAll 함수 사용해 보기 4.3. CoroutineStart.LAZY 사용해 코루틴 지연 시작하기 4.3.1. 지연 시작을 살펴보기 위한 준비 4.3.2. CoroutineStart.LAZY 사용해 코루틴 지연 시작하기 4.4. 코루틴 취소하기 4.4.1. cancel 사용해 Job 취소하기 4.4.2. cancelAndJoin을 사용한 순차 처리 4.5. 코루틴의 취소 확인 4.5.1. delay를 사용한 취소 확인 4.5.2. yield를 사용한 취소 확인 4.5.3. CoroutineScope.isActive를 사용한 취소 확인 4.6. 코루틴의 상태와 Job의 상태 변수 4.6.1. Job의 상태를 출력하는 함수 만들기 4.6.2. 생성 상태의 코루틴 4.6.3. 실행 중 상태의 코루틴 4.6.4. 실행 완료 상태의 코루틴 4.6.5. 취소 중인 코루틴 4.6.6. 취소 완료된 코루틴 4.6.7. 상태 정리 4.7. 요약 5장. async와 Deferred 5.1. async 사용해 결괏값 수신하기 5.1.1. async 사용해 Deferred 만들기 5.1.2. await를 사용한 결괏값 수신 5.2. Deferred는 특수한 형태의 Job이다 5.3. 복수의 코루틴으로부터 결괏값 수신하기 5.3.1. await를 사용해 복수의 코루틴으로부터 결괏값 수신하기 5.3.2. awaitAll을 사용한 결괏값 수신 5.3.3. 컬렉션에 대해 awaitAll 사용하기 5.4. withContext 5.4.1. withContext로 async-await 대체하기 5.4.2. withContext의 동작 방식 5.4.3. withContext 사용 시 주의점 5.5. 요약

출판사 제공 책 소개

2024년 대한민국학술원 우수학술도서 선정도서 ◈ 이 책에서 다루는 내용 ◈ ◆ 풍부한 시각적 자료를 통해 초보 개발자라도 코루틴을 사용한 비동기 프로그래밍을 쉽게 이해할 수 있도록 설명한다. ◆ 코루틴 이전의 멀티 스레드 프로그래밍이 어떤 한계를 가졌는지, 코루틴이 그 한계를 어떻게 극복했는지를 설명한다. ◆ CoroutineContext를 구성하는 다양한 구성 요소의 활용 방법을 설명한다. ◆ 코루틴의 구조화된 동시성과 예외 처리 방법을 알아보고 비동기 프로그래밍을 안정적으로 하는 방법을 설명한다. ◆ 코루틴의 동작 방식에 대한 심층적인 이해를 위한 자료를 제공한다. ◆ 코루틴 유닛 테스트를 작성하는 방법에 대해 기초부터 심화까지 설명한다. ◈ 이 책의 대상 독자 ◈ ◆ 코틀린 코루틴에 대한 지식을 기초부터 핵심까지 탄탄하게 쌓고 싶은 개발자 ◆ 코루틴의 다양한 기능들을 심층적으로 이해해 기술적으로 성장하고 싶은 개발자 ◆ 코루틴의 구조화된 동시성과 예외 처리를 이해해 비동기 프로그래밍을 보다 안정적으로 하는 방법을 배우고 싶은 개발자 ◆ 코루틴의 동작 원리를 이해하고 싶은 개발자 ◆ 코루틴 유닛 테스트를 작성하는 방법을 배우고 싶은 개발자 ◈ 이 책의 구성 ◈ 1장에서는 JVM의 프로세스, 스레드에 대해 다룬다. 기존 멀티 스레드 프로그래밍이 어떤 방식으로 변화했고, 코루틴이 기존 멀티 스레드 프로그래밍의 한계를 어떻게 극복했는지 알아본다. 2장에서는 인텔리제이 아이디어를 사용해 코루틴 개발 환경을 설정하는 방법에 대해 다룬다. 개발 환경을 설정한 후에는 첫 코루틴을 실행해 보고, 어떤 스레드에서 코루틴이 실행 중인지 확인하는 방법에 대해서도 알아본다. 3장에서는 CoroutineDispatcher에 대해 다룬다. 제한된 디스패처를 만드는 방법과 제한된 디스패처를 사용해 코루틴을 실행시키는 방법을 설명한다. 코루틴 라이브러리는 사용자의 편의를 위해 미리 정의된 CoroutineDispatcher를 제공하므로 미리 정의된 CoroutineDispatcher에는 어떤 종류가 있고 언제 사용해야 하는지 살펴본다. 4장에서는 코루틴 빌더 함수인 launch와 launch 호출 시 반환되는 Job 객체를 다룬다. 코루틴은 일시 중단이 가능하므로 작업 간의 순차 처리가 매우 중요하다. Job 객체의 join 함수를 사용해 코루틴 간의 순차 처리 방법과 Job 객체를 통해 코루틴의 상태를 조작하고 상태 값을 확인하는 방법에 대해 알아본다. 5장에서는 async 코루틴 빌더에 대해 설명한다. async와 await를 사용해 코루틴으로부터 반환값을 받는 방법에 대해 알아보고, 코루틴을 실행 중인 스레드의 변경을 위해 withContext를 사용하는 방법에 대해서도 살펴본다. 6장에서는 CoroutineContext에 대해 알아본다. Job, CoroutineDispatcher, CoroutineName이 CoroutineContext의 구성 요소라는 것을 이해하고, CoroutineContext의 구성 요소를 결합하거나 분리하는 방법을 살펴본다. 7장에서는 코루틴을 안전하게 사용하게 위해 구조화된 동시성이 어떻게 사용되는지 부모 코루틴과 자식 코루틴의 관계를 중심으로 알아본다. 이후에는 구조화에 중요한 역할을 하는 CoroutineScope를 알아보고, 구조화의 중심에 Job이 있다는 것을 살펴본다. 8장에서는 예외 처리에 대해 다룬다. 코루틴에서 예외가 발생했을 때 어떻게 전파되는지 알아보고 예외 전파가 구조화된 동시성으로 인해 일어난다는 것을 확인한다. 그리고 supervisorScope나 SupervisorJob을 사용해 예외가 전파될 수 있는 범위를 제한하는 방법에 대해 다룬다. 추가로 try catch문 또는 Coroutine ExceptionHandler를 사용해 전파된 예외를 처리하는 방법에 대해서도 설명한다. 9장에서는 일시 중단 함수에 대해 다룬다. 일시 중단 함수가 재사용이 가능한 코드 블록임을 이해하고, 일시 중단 함수를 사용할 때 주의할 점에 대해 알아본다. 이후에 는 일시 중단 함수를 호출할 수 있는 지점에 대해 알아보고, 일시 중단 함수 내부에서 구조화를 깨지 않는 CoroutineScope를 생성해 새로운 자식 코루틴을 실행하는 방법에 대해서도 살펴본다. 10장에서는 앞서 다룬 내용을 바탕으로 코루틴에 대한 이해를 더욱 깊게 만드는 주제들을 다룬다. 서브루틴과 코루틴의 차이를 알아보고, 코루틴이 협력적으로 동작하는 데 스레드를 양보하는 것이 왜 중요하고 코루틴이 일시 중단 후 재개될 때 어떤 일이 일어나는지 살펴본다. 11장에서는 코루틴의 심화 주제들을 알아본다. 멀티 스레드 환경에서 공유 상태를 사용하는 복수의 코루틴이 있을 때의 데이터 동기화 문제, CoroutineStart 옵션을 통해 코루틴의 실행 방법을 바꾸는 방법, 무제한 디스패처가 동작하는 방식, 코루틴의 일시 중단과 재개가 일어나는 원리에 대해 설명한다. 12장에서는 코루틴 단위 테스트에 대해 다룬다. 코루틴 테스트 라이브러리를 사용하는 방법과 코루틴 단위 테스트를 어떻게 진행하면 좋을지에 대해 알아본다.

본 사이트의 모든 콘텐츠는 왓챠피디아의 자산이며, 사전 동의 없이 복제, 전재, 재배포, 인용, 크롤링, AI학습, 데이터 수집 등에 사용하는 것을 금지합니다.

  • 주식회사 왓챠
  • 대표 박태훈
  • 서울특별시 서초구 강남대로 343 신덕빌딩 3층
  • 사업자 등록 번호 211-88-66013