간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 결제시 최대할인 3천원 / 5만원 이상 결제, 기간 중 1회)
삼성카드 6% (23,690원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (23,940원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (17,640원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (20,160원)
(최대할인 4만원 / 2만원 이상 결제)
Close

코틀린 동시성 프로그래밍 : 예제로 배우는 코틀린 동시성

원제 : Learning Concurrency in Kotlin: Build highly efficient and robust applications
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 402
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

28,000원

  • 25,200 (10%할인)

    1,400P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
  • 추가혜택
    배송정보
    주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서(30)

    • 사은품(7)

    책소개

    코틀린의 코루틴 소개로 시작해 동시성 코드를 어떻게 작성하는지 배우고, 코틀린으로 멀티 스레드 소프트웨어를 개발하는 데 필요한 개념을 이해할 수 있다. 비동기 애플리케이션을 개발할 때 스레드와 코루틴이 어떻게 소통하고 동기화하는지 알게 될 것이다. 또한 에러와 예외를 핸들링하는 방법과 멀티 코어 프로세싱을 활용하는 방법도 배울 수 있다. 추가로 코루틴이 어떻게 내부적으로 동작하는지 파악함으로써 코틀린의 큰 그림을 이해할 수 있을 것이다.

    출판사 서평

    [이 책에서 다루는 내용]

    ■ 동시성에 대한 코틀린의 접근 방식
    ■ 순차적 비동기 일시정지 함수
    ■ 온 디맨드로 다시 시작되는 일시 정지 데이터 소스의 생성
    ■ 에러 핸들링의 베스트 프랙티스
    ■ 코루틴 간의 소통을 위한 채널 사용
    ■ 코루틴의 내부 동작 방식

    [이 책의 대상 독자]

    동시성과 관련한 일반적인 지식을 배우고 싶거나 특정 분야에 코틀린을 적용하려는 개발자를 위한 책이다. 기본적인 코틀린 지식만 있으면 읽을 수 있을 것이다.

    [이 책의 구성]

    1장, 'Hello, Concurrent World!'에서는 동시성을 쉽게 이해할 수 있는 내용 위주로 구성했다. 프로세스, 스레드, 코루틴과 같은 개념으로 시작해서 동시성과 병렬처리를 비교해 소개한다. 동시성을 코딩할 때 부딪치는 일반적인 난관과 동시성에 대한 코틀린의 접근 방식 그리고 이 책에서 전체적으로 등장하는 용어를 소개한다.
    2장, '코루틴 인 액션'에서는 코루틴을 개발하는 첫 번째 실습으로 안드로이드 프로젝트를 생성한다. 이를 통해 코루틴으로 네트워킹하는 방식, 비동기 작업을 위한 유형의 다양한 방식, 각 방식의 장점, 저자가 추천하는 방식을 설명한다.
    3장, '라이프사이클과 에러 핸들링'에서는 코루틴의 라이프 사이클과 코루틴을 사용할 때 발생할 수 있는 오류의 해결 방법을 소개하고, 2장에서 생성한 RSS 리더에 에러 핸들링을 추가해 실제 오류를 어떻게 처리하는지 설명한다.
    4장, '일시중단 함수와 코루틴 컨텍스트'에서는 코루틴의 필수 컨텍스트와 코루틴이 동작을 정의하고 수정하는 설정을 소개한다. 코루틴의 스레드의 정의와 에러 핸들링에 필요한 컨텍스트를 다룬다.
    5장, '이터레이터, 시퀀스 그리고 프로듀서'에서는 데이터 소싱과 처리를 일시 중단하는 데 필요한 프리미티브를 소개한다. 언제, 어떻게, 이러한 프리미티브를 사용해야 하는지와 온디맨드 데이터 로딩을 구현하는 방식을 상세히 살펴본다.
    6장, '채널, 통신을 통한 메모리 공유'에서는 매우 중요한 채널의 개념을 설명한다. 다양한 유형의 유즈케이스와 차이점으로 시작해 애플리케이션 개발 방식을 설명하며, RSS 피드 그룹에서 채널을 이용해 어떻게 동시 검색할 수 있는지 살펴본다.
    7장, '스레드 한정, 액터 그리고 뮤텍스'에서는 원자성 위반이나 레이스 컨디션과 같은 에러를 방지하기 위해 사용되는 세 개의 코루틴 프레임워크 도구를 소개한다. 또한 동시성 코드를 작성할 때 기초가 되는 스레드 한정과 액터 그리고 뮤텍스에 대해 배울 수 있다.
    8장, '동시성 코드 테스트와 디버깅'에서는 테스트를 어떻게 최대한 활용할 수 있는지 다룬다. 기능 테스트와 동시성 코드를 테스트할 수 있는 세 개의 구간 그리고 프로젝트 설정을 통해 로그를 활용하는 방법을 알아본다. 다른 스레드 또는 코루틴에서 발생하는 노이즈를 피하기 위해 동시성 코드를 디버그하는 방법도 살펴본다.
    9장, '코틀린의 동시성'에서는 내부 실행 단계에서의 일시 중단 함수와 스레드 시행 그리고 예외 핸들링을 분석한다. 컴파일러의 역할과 stdlib 및 코루틴 라이브러리에 존재하는 여러 개의 클래스를 구현하는 방법을 설명하고 있어 내부 동작 방식을 상세히 이해할 수 있다.

    [지은이의 말]

    이 책은 다이어그램, 예시, 실제 유스케이스 등을 사용해 다양한 주제를 상세히 소개한다. 대부분의 장에서 안드로이드 RSS 리더의 생성과 수정을 다루고 있고 RSS 리더는 코틀린 언어에서 제공하는 도구와 기본 요소, 코루틴 라이브러리만을 사용해 개발됐다. 애플리케이션을 생성할 때 코드를 단순 복사하기보다는 직접 입력해보길 권장한다. 더 나아가 코드에 의존하지 말고 여러 시도를 해보기 바란다. 뭔가를 해결하는 방법이 궁금해진다는 것은 뇌가 특정 개념을 어떻게 적용할 것인가를 이해하기 시작했음을 의미한다. 그리고 그것이 잘 작동하는지 알기 위해 노력하는 것보다 좋은 것은 없다.
    코루틴은 코틀린이 지원하는 모든 플랫폼(JVM, JavaScript, Kotlin/Native)을 지원하도록 개발되고 있지만, 이 책을 쓰는 시점에서 가장 완벽하게 지원되는 플랫폼은 JVM이었다. 이러한 이유로 JVM 환경에서 제공되는 기술과 구현되는 방법을 중심으로 이 책을 저술했다. 하지만 많은 개념과 기본 요소가 JavaScript 환경에서도 유사하게 동작한다고 알고 있고, 일단 구현되면 Kotlin/Native에서도 똑같이 동작하리라 본다.
    담지 못한 많은 주제가 있지만 이 책의 내용이 여러분 스스로 발전하는 데 충분하리라 믿는다. 이 책을 기반으로 다양한 동시성 애플리케이션을 개발할 수 있을 것이다.

    [옮긴이의 말]

    최신 애플리케이션은 고성능의 멀티 코어 CPU 환경을 최대한 활용하도록 개발되고 있다. 이런 환경에서는 동시성을 제대로 이해하고 고려해야 할 필요가 더욱 절실하다. 코틀린은 2017년 구글이 안드로이드의 개발 언어로 공식 지정된 후, 안드로이드 생태계에서 메인 개발 언어로 자리매김하고 있다. 또한 코틀린은 동시성을 뒷받침하기 위해 다양한 언어적 지원 기능을 제공하고 있다.
    기존 Java/Android 동시성 프레임워크가 제공하는 단점들을 코루틴을 통해 훨씬 쉽고 효과적으로 처리할 수 있으며 코틀린이 언어적으로 제공하는 다양한 기본형들을 활용해 넌 블로킹, 비동기 코드를 마치 동기 코드처럼 쉽게 작성할 수 있다.
    이 책은 코틀린의 동시성을 학습하기 위해 필요한 코루틴 개념과 동시성, 병렬성의 차이점을 그림으로 쉽게 설명해 코틀린에서 멀티스레드 애플리케이션을 만들기 위해 꼭 알아야 하는 기본 개념을 이해할 수 있다. 코틀린의 기본형을 활용하는 실제 예제를 만들면서 스레드와 코루틴 간의 통신 방법과 비동기 애플리케이션을 개발하면서 오류와 예외 처리하는 방법을 익히고 멀티 코어 처리를 활용하는 방법도 배울 수 있다. 코틀린의 동시성 프로그램 기법과 동시성의 내부 동작 방식에 대한 이해도를 높일 수 있는 기회가 되리라 기대한다.

    목차

    1장. Hello Concurrent World

    __프로세스, 스레드, 코루틴
    ____프로세스
    ____스레드
    ____코루틴
    ____내용 정리
    ____동시성에 대해
    ____동시성은 병렬성이 아니다
    ____CPU 바운드와 I/O 바운드
    ____CPU 바운드 알고리즘에서의 동시성과 병렬성
    ____I/O 바운드 알고리즘에서의 동시성 대 병렬성
    ____동시성이 어려운 이유
    __코틀린에서의 동시성
    ____넌 블로킹
    ____명시적인 선언
    ____코틀린 동시성 관련 개념과 용어
    __요약

    2장. 코루틴 인 액션

    __안드로이드 스튜디오 다운로드 및 설치
    __코틀린 프로젝트 생성하기
    __코루틴 지원 추가하기
    __안드로이드의 UI 스레드
    ____CallFromWrongThreadException
    ____NetworkOnMainThreadException
    ____백그라운드에서 요청하고, UI 스레드에서 업데이트
    __스레드 생성
    ____CoroutineDispatcher
    ____디스패처에 코루틴 붙이기
    __네트워킹 사용 권한 추가
    __서비스 호출을 위한 코루틴 생성
    __UI 요소 추가
    ____UI가 블로킹되면 발생하는 일
    __처리된 뉴스의 수량 표시
    __UI 디스패처 사용
    ____플랫폼별 UI 라이브러리
    __요청 보류 여부를 위한 비동기 함수 생성
    ____비동기 호출자로 감싸인 동기 함수
    ____미리 정의된 디스패처를 갖는 비동기 함수
    ____유연한 디스패처를 가지는 비동기 함수
    ____더 좋은 방식을 선택하기 위한 방법
    __요약

    3장. 라이프 사이클과 에러 핸들링

    __잡과 디퍼드
    ____잡
    ____디퍼드
    __상태는 한 방향으로만 이동
    ____최종 상태의 주의 사항
    __RSS - 여러 피드에서 동시에 읽기
    ____피드 목록 지원
    ____스레드 풀 만들기
    ____데이터를 동시에 가져오기
    ____응답 병합
    ____동시 요청 테스트
    ____넌 해피 패스(Non-happy path) - 예기치 않은 중단
    ____디퍼드가 예외를 갖도록 하기
    ____예외를 무시하지 말 것!
    __요약

    4장. 일시 중단 함수와 코루틴 컨텍스트

    __RSS 리더 UI 개선
    ____각 피드에 이름 부여
    ____피드의 기사에 대한 자세한 정보 가져오기
    ____스크롤이 가능한 기사 목록 추가
    ____기사 별 레이아웃
    ____정보 매핑을 위한 어댑터
    ____액티비티에 어댑터 연결
    ____새 UI 테스트
    __일시 중단 함수
    ____동작 중인 함수를 일시 중단
    __코루틴 컨텍스트
    ____디스패처
    ____예외 처리
    ____Non-cancellable
    __컨텍스트에 대한 추가 정보
    ____컨텍스트 결합
    ____withContext를 사용하는 임시 컨텍스트 스위치
    __요약

    5장. 이터레이터, 시퀀스 그리고 프로듀서

    __일시 중단 가능한 시퀀스 및 이터레이터
    __값 산출
    __이터레이터
    ____이터레이터와의 상호 작용
    __시퀀스
    ____시퀀스와 상호 작용
    ____시퀀스는 상태가 없다
    ____일시 중단 피보나치
    ____피보나치 수열 작성
    ____피보나치 이터레이터 작성
    __프로듀서
    ____프로듀서 만들기
    ____프로듀서와 상호 작용
    ____프로듀서를 사용한 일시 중단 피보나치 수열
    __프로듀서 인 액션
    ____어댑터에서 더 많은 기사 요청
    ____온 디멘드 피드를 가져 오는 프로듀서 만들기
    ____UI의 목록에 기사 추가하기
    __요약

    6장. 채널 - 통신을 통한 메모리 공유

    __채널 이해
    ____스트리밍 데이터 사례
    ____분산 작업 사례
    __채널 유형과 배압
    ____언버퍼드 채널
    ____버퍼드 채널
    __채널과 상호 작용
    ____SendChannel
    ____ReceiveChannel
    ____읽기 전 유효성 검사
    ____채널 인 액션
    ____협업 검색 구현하기
    __요약

    7장. 스레드 한정, 액터 그리고 뮤텍스

    __원자성 위반
    ____원자성의 의미
    __스레드 한정
    ____스레드 한정의 개요
    ____코루틴을 단일 스레드로 한정
    __액터
    ____액터란?
    ____액터 생성
    ____액터를 사용해 기능 확장
    ____액터 상호 작용에 대한 추가 정보
    __상호 배제
    ____상호 배제 이해
    ____상호 배제와 상호 작용
    __휘발성 변수
    ____스레드 캐시
    ____@Volatile
    ____@Volatile이 스레드 안전 카운터 문제를 해결하지 못하는 이유
    ____@Volatile을 사용하는 경우
    __원자적 데이터 구조
    __액터 인 액션
    ____UI에 라벨 추가
    ____카운터로 사용할 액터 만들기
    ____결과가 로드될 때 카운터 증가시키기
    ____UI가 업데이트에 반응하도록 채널 추가하기
    ____채널을 통해 업데이트된 값 보내기
    ____변경사항에 대한 UI 업데이트
    ____구현 테스트
    ____새로운 검색 시 카운터 재설정하기
    __요약

    8장. 동시성 코드 테스트와 디버깅

    __동시성 코드 테스트
    ____가정을 버려라
    ____나무가 아닌, 숲에 집중하라
    ____테스트에 대한 추가 조언
    __테스트 작성
    ____결함이 있는 UserManager 작성하기
    ____kotlin-test 라이브러리 추가
    ____해피 패스 테스트 추가
    ____에지 케이스를 위한 테스트
    ____문제점 식별
    ____중단 해결
    ____테스트 재시도
    __디버깅
    ____로그에서 코루틴 식별
    ____디버거에서 코루틴 식별
    ____조건부 브레이크 포인트
    __복원력과 안정성
    __요약

    9장. 코틀린의 동시성 내부

    __연속체 전달 스타일
    ____연속체
    ____suspend 한정자
    ____상태 머신
    __컨텍스트 전환
    ____스레드 전환
    ____예외 처리
    __요약

    저자소개

    미구엘 엔젤 카스티블랑코 토레스 [저] 신작알림 SMS신청 작가DB보기
    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    저서 [코틀린 동시성 프로그래밍]

    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    개발자로 IT 경력을 시작해 EnSOA와 티맥스소프트를 거치면서 CBD & SOA 방법론 컨설팅을 했다. 오라클에서는 클라우드 네이티브, 컨테이너 네이티브 애플리케이션 개발과 운영을 도우며 개발자 생태계를 지원하고 소통하는 역할을 하고 있다. 최근 머신러닝에도 많은 관심을 갖고 있다.

    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    역서 [코틀린 동시성 프로그래밍]

    이 상품의 시리즈

    프로그래밍 언어 시리즈(총 31권 / 현재구매 가능도서 31권)

    펼쳐보기

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      0.0 (총 0건)

      구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

      리뷰쓰기

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      0.0

      교환/환불

      교환/환불 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

      교환/환불 가능 기간

      고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

      교환/환불 비용

      고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

      교환/환불 불가사유

      반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
      배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

      소비자 피해보상

      소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
      교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

      기타

      도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

      배송안내

      • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

      • 배송비

      도서(중고도서 포함) 구매

      2,000원 (1만원이상 구매 시 무료배송)

      음반/DVD/잡지/만화 구매

      2,000원 (2만원이상 구매 시 무료배송)

      도서와 음반/DVD/잡지/만화/
      중고직배송상품을 함께 구매

      2,000원 (1만원이상 구매 시 무료배송)

      업체직접배송상품 구매

      업체별 상이한 배송비 적용