[안드로이드/Coroutine] Coroutine Dispatcher

2024. 7. 18. 03:16· Android/Coroutine
목차
  1. 💡 Coroutine Dispatcher
반응형

💡 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
  1. 💡 Coroutine Dispatcher
'Android/Coroutine' 카테고리의 다른 글
  • [안드로이드/Coroutine] Coroutine 예제를 통해 본격 딥다이브 & Structured concurrency
  • [안드로이드/Coroutine] Coroutine(코루틴)이란?
gangmini
gangmini
gangmini
게으른J 의 테크로그
gangmini
전체
오늘
어제
글쓰기방명록관리자
  • 분류 전체보기 (127)
    • 인공지능(AI) & 데이터 분석 (5)
    • Android (91)
      • Coroutine (3)
      • Compose (0)
      • 안드로이드 CS (0)
    • Kotlin (3)
    • Data Structure (0)
    • 알고리즘 (20)
      • 알고리즘 이론 (11)
      • 백준(BOJ) 문제 풀이 (9)
    • Build Tool (2)
    • Git (2)
    • 일본어 (0)
    • 기타(취준, 활동) (0)


인기 글



최근 댓글



최근 글

hELLO · Designed By 정상우.v4.2.2
gangmini
[안드로이드/Coroutine] Coroutine Dispatcher
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.