본문 바로가기
안드로이드/Coroutine

[안드로이드] Coroutine Scope / Thread vs Corountine

by 안드뽀개기 2022. 4. 8.
반응형

CoroutineScope

 - 코루틴의 범위, 코루틴 블록을 묶음으로 제어할수 있는 단위

 - 액티비티의 생명주기에 따라 동작

GlobalScope

 - 앱의 생명주기와 함께 동작해서 실행 도중에 별로도 생명주기를 관리해 줄 필요가 없다. 시작부터 종료까지 장기간 실행되는 코루틴 작업에 적합

 - 싱글톤으로 동작

 - CorountineScope를 상속받음

 - cancel 처리가 복잡

ViewModelScope

 - Jetpack 아키텍처의 viewModel 컴포넌트를 사용시 ViewModel 인스턴스에서 사용하기 위해 제공되는 scope이다. viewModelScope로 실행되는 코루틴은 ViewModel 인스턴스가 소멸될 때 자동으로 취소됨

 

ViewModelScope

 LifecycleScope는 각 Lifecycle 객체에서 정의되고, 이 범위에서 정의된 코루틴은 Lifecycle이 끝날 때 취소됨

 


Thread

 - OS에서 Thread를 직접 할당하므로 시스템 자원을 사용

 - 작업 전환시(Thread 전환 시) CPU 상태 체크가 필요

Corountine

 - Thread와 다르게 OS의 영향을 받지 않아, 시스템 자원을 절약

 - 개발자가 직접 루틴의 시작과 끝을 지정할 수 있다.

 - 작업 전환 시 에도 시스템의 영항을 받지 않음

 

두 가지 모두 Background에서 실행되는 점은 동일하다. 하지만 Coroutine은 하나의 실행 및 종료되어야 하는 일(job)이고,

Thread는 루틴 혹은 일(job)이 실행되는 영역이다.

 

즉, 하나의 Thread에서 여러 개의 Coroutine들이 실행될 수 있다.

반응형