안드로이드/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가 적합하다.
반응형