안드로이드/Coroutine

[안드로이드] Coroutine의 Dispatchers.IO 와 Dispatchers.Default의 차이

안드뽀개기 2022. 4. 12. 20:51
반응형

Dispatcher는 코루틴에서 특정 스레드를 실행할 수 있도록 해주는 기능을 합니다. (RxJava의 subscribeOn()과 동일한 기능)

 

네트워크 입출력이 필요한 작업에사용할 수 있는 스레드가 IO와 Default 두 가지 입니다.

그렇다면 두 개의 차이점이 무엇인지 알아보면,

Dispatchers.IO

: 필요에 따라 추가적으로 스레드를 더 생성하거나 줄일 수 있으며 최대 64개까지 생성가능하다.

Dispatchers.Default

: Default 사용 시  JVM의 공유 스레드풀을 사용하고 동시 작업 가능한 최대 갯수는 CPU의 코어 수와 같다.

(ex: CPU가 4코어이면 최대 4개의 병렬작업이 가능)

 

따라서, 이 둘의 용도가 다르다

IO의 경우 네트워크 대기시간이 네트워크 입출력 작업에 사용.
Default의 경우 대기시간이 없고 지속적으로 CPU의 작업을 필요로 하는 작업에 사용.

 

즉, 대기시간이 있는 네트워크 작업은 많은 스레드로 병렬처리하는 것이 더 빠르기 때문에 IO가 적합하고, 연산작업이 많은(CPU를 많이 사용) 계산과 같은 작업은 Default가 적합하다.

 

 

반응형