전체상품목록 바로가기

본문 바로가기



현재 위치
  1. 컴퓨터/IT

[] [하나북]코틀린 코루틴의 정석 :기초부터 심화까지 알아보는

(해외배송 가능상품)
공급사 바로가기
기본 정보
상품명 [하나북]코틀린 코루틴의 정석 :기초부터 심화까지 알아보는
소비자가 35,000원
판매가 31,500원
모델 에이콘출판
국내·해외배송 국내배송
배송방법 택배
배송비 2,500원 (20,000원 이상 구매 시 무료)
SNS 상품홍보
SNS 상품홍보

개인결제창을 통한 결제 시 네이버 마일리지 적립 및 사용이 가능합니다.

상품 옵션
옵션 선택

(최소주문수량 1개 이상 / 최대주문수량 0개 이하)

사이즈 가이드

수량을 선택해주세요.

위 옵션선택 박스를 선택하시면 아래에 상품이 추가됩니다.

상품 목록
상품명 상품수 가격
[하나북]코틀린 코루틴의 정석 :기초부터 심화까지 알아보는 수량증가 수량감소 31500 (  )
총 상품금액(수량) : 0 (0개)

할인가가 적용된 최종 결제예정금액은 주문 시 확인할 수 있습니다.

바로구매하기예약주문 장바구니 담기 SOLD OUT 관심상품등록

이벤트

상품상세정보



▷ 책소개

많은 개발자들이 어렵게 느끼는 비동기 프로그래밍을 다양한 시각적 자료와 이해하기 쉬운 설명을 통해 누구나 쉽게 이해할 수 있도록 설명한다. 안드로이드, 스프링 등 코틀린을 사용하는 개발자들 중 코루틴을 사용한 비동기 프로그래밍을 기초부터 심화까지 제대로 배워보고 싶은 독자들에게 추천한다.

▷ 목차

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. 요약


6장 CoroutineContext
6.1. CoroutineContext의 구성 요소
6.2. CoroutineContext 구성하기
6.2.1. CoroutineContext가 구성 요소를 관리하는 방법
6.2.2. CoroutineContext 구성
6.2.3. CoroutineContext 구성 요소 덮어씌우기
6.2.4. 여러 구성 요소로 이뤄진 CoroutineContext 합치기
6.2.5. CoroutineContext에 Job 생성해 추가하기
6.3. CoroutineContext 구성 요소에 접근하기
6.3.1. CoroutineContext 구성 요소의 키
6.3.2. 키를 사용해 CoroutineContext 구성 요소에 접근하기
6.4. CoroutineContext 구성 요소 제거하기
6.4.1. minusKey 사용해 구성 요소 제거하기
6.4.2. minusKey 함수 사용 시 주의할 점
6.5. 요약


7장 구조화된 동시성
7.1. 실행 환경 상속
7.1.1. 부모 코루틴의 실행 환경 상속
7.1.2. 실행 환경 덮어씌우기
7.1.3. 상속되지 않는 Job
7.1.4. 구조화에 사용되는 Job
7.2. 코루틴의 구조화와 작업 제어
7.2.1. 취소의 전파
7.2.2. 부모 코루틴의 자식 코루틴에 대한 완료 의존성
7.3. CoroutineScope 사용해 코루틴 관리하기
7.3.1. CoroutineScope 생성하기
7.3.2. 코루틴에게 실행 환경을 제공하는 CoroutineScope
7.3.3. CoroutineScope에 속한 코루틴의 범위
7.3.4. CoroutineScope 취소하기
7.3.5. CoroutineScope 활성화 상태 확인하기
7.4. 구조화와 Job
7.4.1. runBlocking과 루트 Job
7.4.2. Job 구조화 깨기
7.4.3. Job 사용해 일부 코루틴만 취소되지 않게 만들기
7.4.4. 생성된 Job의 부모를 명시적으로 설정하기
7.4.5. 생성된 Job은 자동으로 실행 완료되지 않는다
7.5. 요약


8장 예외 처리
8.1. 코루틴의 예외 전파
8.1.1. 코루틴에서 예외가 전파되는 방식
8.1.2. 예제로 알아보는 예외 전파
8.2. 예외 전파 제한
8.2.1. Job 객체를 사용한 예외 전파 제한
8.2.2. SupervisorJob 객체를 사용한 예외 전파 제한
8.2.3. supervisorScope를 사용한 예외 전파 제한
8.3. CoroutineExceptionHandler를 사용한 예외 처리
8.3.1. CoroutineExceptionHandler 생성
8.3.2. CoroutineExceptionHandler 사용
8.3.3. 처리되지 않은 예외만 처리하는 CoroutineExceptionHandler
8.3.4. CoroutineExceptionHandler가 예외를 처리하도록 만들기
8.3.5. CoroutineExceptionHandler는 예외 전파를 제한하지 않는다
8.4. try catch문을 사용한 예외 처리
8.4.1. try catch문을 사용해 코루틴 예외 처리하기
8.4.2. 코루틴 빌더 함수에 대한 try catch문은 코루틴의 예외를 잡지 못한다
8.5. async의 예외 처리
8.5.1. async의 예외 노출
8.5.2. async의 예외 전파
8.6. 전파되지 않는 예외
8.6.1. 전파되지 않는 CancellationException
8.6.2. 코루틴 취소 시 사용되는 JobCancellationException
8.6.3. withTimeOut 사용해 코루틴의 실행 시간 제한하기
8.7. 요약


9장 일시 중단 함수
9.1. 일시 중단 함수와 코루틴
9.1.1. 일시 중단 함수란 무엇인가?
9.1.2. 일시 중단 함수는 코루틴이 아니다
9.1.3. 일시 중단 함수를 별도의 코루틴상에서 실행하기
9.2. 일시 중단 함수의 사용
9.2.1. 일시 중단 함수의 호출 가능 지점
9.2.2. 일시 중단 함수에서 코루틴 실행하기
9.3. 요약


10장 코루틴의 이해
10.1. 서브루틴과 코루틴
10.1.1. 루틴과 서브루틴
10.1.2. 서브루틴과 코루틴의 차이
10.2. 코루틴의 스레드 양보
10.2.1. delay 일시 중단 함수를 통해 알아보는 스레드 양보
10.2.2. join과 await의 동작 방식 자세히 알아보기
10.2.3. yield 함수 호출해 스레드 양보하기
10.3. 코루틴의 실행 스레드
10.3.1. 코루틴의 실행 스레드는 고정이 아니다
10.3.2. 스레드를 양보하지 않으면 실행 스레드가 바뀌지 않는다
10.4. 요약


11장 코루틴 심화
11.1. 공유 상태를 사용하는 코루틴의 문제와 데이터 동기화
11.1.1. 가변 변수를 사용할 때의 문제점
11.1.2. JVM의 메모리 공간이 하드웨어 메모리 구조와 연결되는 방식
11.1.3. 공유 상태에 대한 메모리 가시성 문제와 해결 방법
11.1.4. 공유 상태에 대한 경쟁 상태 문제와 해결 방법
11.2. CoroutineStart의 다양한 옵션들 살펴보기
11.2.1. CoroutineStart.DEFAULT
11.2.2. CoroutineStart.ATOMIC
11.2.3. CoroutineStart.UNDISPATCHED
11.3. 무제한 디스패처
11.3.1. 무제한 디스패처란?
11.3.2. 무제한 디스패처의 특징
11.4. 코루틴의 동작 방식과 Continuation
11.4.1. Continuation Passing Style
11.4.2. 코루틴의 일시 중단과 재개로 알아보는 Continuation
11.4.3. 다른 작업으로부터 결과 수신해 코루틴 재개하기
11.5. 요약


12장 코루틴 단위 테스트
12.1. 단위 테스트 기초
12.1.1. 단위 테스트란 무엇인가?
12.1.2. 테스트 환경 설정하기
12.1.3. 간단한 테스트 만들고 실행하기
12.1.4. @BeforeEach 어노테이션을 사용한 테스트 환경 설정
12.1.5. 테스트 더블을 사용해 의존성 있는 객체 테스트하기
12.2. 코루틴 단위 테스트 시작하기
12.2.1. 첫 코루틴 테스트 작성하기
12.2.2. runBlocking을 사용한 테스트의 한계
12.3. 코루틴 테스트 라이브러리
12.3.1. 코루틴 테스트 라이브러리 의존성 설정하기
12.3.2. TestCoroutineScheduler 사용해 가상 시간에서 테스트 진행하기
12.3.3. TestCoroutineScheduler를 포함하는 StandardTestDispatcher
12.3.4. TestScope 사용해 가상 시간에서 테스트 진행하기
12.3.5. runTest 사용해 테스트 만들기
12.4. 코루틴 단위 테스트 만들어 보기
12.4.1. 코루틴 단위 테스트를 위한 코드 준비하기
12.4.2. FollowerSearcher 클래스 테스트 작성하기
12.5. 코루틴 테스트 심화
12.5.1. 함수 내부에서 새로운 코루틴을 실행하는 객체에 대한 테스트
12.5.2. backgroundScope를 사용해 테스트 만들기
12.6. 요약

▷ 저자소개

조세영

취미로 안드로이드 개발을 시작했다가 빠져들어 안드로이드 개발자가 됐다. 하이퍼커넥트에서 안드로이드 개발자로서 커리어를 시작했고, 현재는 라인플러스에서 라인 안드로이드 앱을 개발하고 있다.안드로이드 개발을 하면서 어려움을 느낀 부분들을 다른 사람들과 공유하고 싶어 ‘조세영의 Kotlin World’ 기술 블로그를 운영하며 400개 이상의 글을 발행했다.블로그 운영 외에도 기술과 관련된 다양한 활동을 하고 있다. 코루틴 기술 문서를 번역해 웹에 배포하기도 했고, Compose Dynamic Theme이나 Filled Slider Compose 같은 오픈 소스 라이브러리를 만들어 배포해 Google Dev Library에 소개되기도 했다.경력현) 라인플러스 안드로이드 개발자전) 하이퍼커넥트 안드로이드 개발자전) 티맥스데이터 연구원전) 인공위성연구소 대학원생 연구원학력KAIST 전기및전자공학부 석사고려대학교 전기전자전파공학부 학사고려대학교 보건정책관리학부 학사인천외국어고등학교 졸업





상품결제정보

고액결제의 경우 안전을 위해 카드사에서 확인전화를 드릴 수도 있습니다. 확인과정에서 도난 카드의 사용이나 타인 명의의 주문등 정상적인 주문이 아니라고 판단될 경우 임의로 주문을 보류 또는 취소할 수 있습니다.  

무통장 입금은 상품 구매 대금은 PC뱅킹, 인터넷뱅킹, 텔레뱅킹 혹은 가까운 은행에서 직접 입금하시면 됩니다.  
주문시 입력한 입금자명과 실제입금자의 성명이 반드시 일치하여야 하며, 7일 이내로 입금을 하셔야 하며 입금되지 않은 주문은 자동취소 됩니다.

배송정보

  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 2,500원
  • 배송 기간 : 1일 ~ 2일
  • 배송 안내 : - 산간벽지나 도서지방은 별도의 추가금액을 지불하셔야 하는 경우가 있습니다.
    고객님께서 주문하신 상품은 입금 확인후 배송해 드립니다. 다만, 상품종류에 따라서 상품의 배송이 다소 지연될 수 있습니다.
    - 제주도 3000원/도서산간지역 7000원

교환 및 반품정보

교환 및 반품 주소
 - [10882] 경기도 파주시 산남로 85-10 (산남동) 하나북스퀘어
 
교환 및 반품이 가능한 경우
 - 계약내용에 관한 서면을 받은 날부터 7일. 단, 그 서면을 받은 때보다 재화등의 공급이 늦게 이루어진 경우에는 재화등을 공급받거나 재화등의 공급이 시작된 날부터 7일 이내
  - 공급받으신 상품 및 용역의 내용이 표시.광고 내용과 다르거나 계약내용과 다르게 이행된 때에는 당해 재화 등을 공급받은 날 부터 3월이내, 그사실을 알게 된 날 또는 알 수 있었던 날부터 30일이내
 
교환 및 반품이 불가능한 경우
 - 이용자에게 책임 있는 사유로 재화 등이 멸실 또는 훼손된 경우(다만, 재화 등의 내용을 확인하기 위하여 포장 등을 훼손한 경우에는 청약철회를 할 수 있습니다)
  - 이용자의 사용 또는 일부 소비에 의하여 재화 등의 가치가 현저히 감소한 경우
  - 시간의 경과에 의하여 재판매가 곤란할 정도로 재화등의 가치가 현저히 감소한 경우
  - 복제가 가능한 재화등의 포장을 훼손한 경우
  - 개별 주문 생산되는 재화 등 청약철회시 판매자에게 회복할 수 없는 피해가 예상되어 소비자의 사전 동의를 얻은 경우
  - 디지털 콘텐츠의 제공이 개시된 경우, (다만, 가분적 용역 또는 가분적 디지털콘텐츠로 구성된 계약의 경우 제공이 개시되지 아니한 부분은 청약철회를 할 수 있습니다.)
 
※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
 (색상 교환, 사이즈 교환 등 포함)

서비스문의

상품사용후기

상품의 사용후기를 적어주세요.

게시물이 없습니다

상품문의하기 모두 보기

상품 Q&A

상품에 대해 궁금한 점을 해결해 드립니다.

게시물이 없습니다

상품문의하기 모두 보기


네이버
리뷰이벤트

장바구니 0