반응형
💡 Coroutine Dispatcher
처음엔 이 디스패쳐가 그냥 스레드 종류를 정해주는 역할을 한다고만 생각했다.
하지만 그 이름의 뜻을 살펴보면 Dispatch = ‘보내다’ 라는 뜻이다.
그래서 생성된 코루틴을 어떤 스레드로 보낼지를 정해주는 것이 바로 Coroutine Dispatcher 이다.
디스패처는 자신이 사용할 수 있는 스레드풀에 스레드를 생성해 관리하고, 상황에 맞춰 코루틴을 분배해 스레드에 전달한다.
기본적으로 제공하고 있는 디스패처는 다음과 같다.
✔️ Dispatchers.Main
- mian 스레드를 관리하는 디스패처이다 main 스레드는 한 개만 생성된다고 알고있다. 따라서 해당 스레드를 blocking 해서 사용하게 되면 ANR 에러가 발생할 수 있기 때문에 사용시 유의해야한다.
- coroutine-android 라이브러리를 추가해야 사용 가능하다
✔️ Dispatchers.IO
- 디스크 또는 네트워크 I/O 작업을 실행하는데 좋은 디스패처
✔️ Dispatchers.Default
- CPU를 많이 사용하는 작업
- 연산량이 많은 작업, 정렬 작업, JSON 파싱 작업에 좋다
기본으로 제공하는 디스패처 외에 직접 디스패처를 만들어 사용할 수도 있다.
디스패처가 스레드풀을 관리하고 그 스레드풀 안에서 1개 이상의 스레드가 생성된다고 했는데 멀티/싱글 2가지 종류의 스레드를 생성하는 디스패처를 만들어볼 수 있다.
1. 여러개의 스레드를 관리하는 멀티스레드풀
val dispatcher = newFixedThreadPoolContext(3, "ThreadPool")
2. 스레드를 하나만 관리하는 단일스레드(풀)
val dispatcher = newSingleThreadContext("SingleThread")
반응형
'Android > Coroutine' 카테고리의 다른 글
[안드로이드/Coroutine] Coroutine 예제를 통해 본격 딥다이브 & Structured concurrency (0) | 2024.07.18 |
---|---|
[안드로이드/Coroutine] Coroutine(코루틴)이란? (0) | 2024.03.03 |