시배's Android
Kotlin 동시성 프로그래밍 | 2장. 코루틴 인 액션 본문
안드로이드의 UI 스레드
- 안드로이드는 뷰 계층을 생성하지 않은 스레드가 관련 뷰를 업데이트하려고 할 때마다 CalledFromWrongThreadException을 발생시킨다.
- 자바에서의 네트워크 동작은 기본적으로 블로킹된다. NetworkOnMainThreadException 발생
- 백그라운드에서 요청하고, UI 스레드에서 업데이트할 것
스레드 생성
- CoroutineDispatcher
- 기본적으로 가용성, 부하, 설정을 기반으로 스레드 간에 코루틴을 분산하는 오케스트레이터다.
- asyn()는 Deferred<T>를 반환하는데, 디퍼트 코루틴 프레임워크에서 제공하는 취소 불가능한 넌블로킹 퓨처를 의미한다.
- asyn() 블록 안에서 발생하는 예외는 그 결과에 첨부되는데, isCancelled와 getCancellationException() 메소드를 함께 사용해 안전하게 예외를 가져올 수 있다.
- join()은 예외를 전파하지 않고 처리하는 반면, await()는 단지 호출하는 것만으로 예외가 전파된다는 점이다.
- launch()는 연산이 실패한 경우에만 통보 받기를 원하는 파이어-앤-포겟 시나리오를 위해 설계됐다.
- 예외가 출력되지만 실행이 중단되지 않는다.
'Book > Kotlin 동시성 프로그래밍' 카테고리의 다른 글
Kotlin 동시성 프로그래밍 | 6장. 채널 - 통신을 통한 메모리 공 (0) | 2023.07.26 |
---|---|
Kotlin 동시성 프로그래밍 | 5장. 이터레이터, 시퀀스 그리고 프로듀서 (0) | 2023.07.22 |
Kotlin 동시성 프로그래밍 | 4장. 일시 중단 함수와 코루틴 컨텍스트 (0) | 2023.07.09 |
Kotlin 동시성 프로그래밍 | 3장. 라이프 사이클과 에러 핸들링 (0) | 2023.07.09 |
Kotlin 동시성 프로그래밍 | 1장. Hello, Concurrent World! (0) | 2023.07.09 |