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들이 실행될 수 있다.
'안드로이드 > Coroutine' 카테고리의 다른 글
Coroutine 예외처리 (0) | 2023.03.08 |
---|---|
Coroutine Flow (0) | 2023.02.13 |
동시성에 대하여...feat 코루틴 (0) | 2023.02.10 |
[안드로이드] Coroutine의 Dispatchers.IO 와 Dispatchers.Default의 차이 (0) | 2022.04.12 |