[Kotlin] 코루틴
💡 운영체제의 깊이있는 지식이 없어도 쉽게 비동기 프로그래밍을 할 수 있다.
- 설명
- 최적화된 비동기 함수를 사용한다.
- 하드웨어 자원의 효율적인 할당을 가능하게 한다.
- 안정적인 동시성, 비동기 프로그래밍을 가능하게 한다.
- 코루틴이 쓰레드보다 더욱 가볍게 사용할 수 있다.
- 로직들을 협동해서 실행하자는게 목표이고 구글에서 적극 권장한다.
💡 코루틴은 빌더와 함께 사용한다.
- 코루틴 빌더의 종류
- 일반적으로
launch
와async
빌더를 가장 많이 사용한다. launch
는 결과값이 없는 코루틴 빌더를 의미한다.
- 일반적으로
lanuch
는 Job객체로 코루틴을 관리한다.- Job객체는 다양한 함수를 가지고 있다.
- join: 현재의 코루틴이 종료되기를 기다린다.
- cancel: 현재의 코루틴을 즉시 종료한다.
async
는 결과값이 있는 코루틴이다.- 코루틴은 스코프로 범위를 지정할 수 있다.
- GlobalScope: 앱이 실행된 이후에 계속 수행되어야할때 사용한다.
- CoroutineScope: 필요할때만 생성하고 사용후에 정리가 필요하다.
- 코루틴을 실행할 쓰레드를 Dispatcher로 지정할 수 있다.
- Dispatchers.Main: UI와 상호작용하기 위한 메인쓰레드
- Dispatchers.IO: 네트워크나 디스크 I/O작업에 최적화되어있는 쓰레드
- Dispatchers.Default: 기본적으로 CPU최적화되어있는 쓰레드
- 안드로이드에서는 특히 Dispatcher간의 변환을 해야하는 작업을 고려해야한다.