[Android/안드로이드] 코루틴의 기초

JINA·2021년 9월 14일
0

Android/basic

목록 보기
3/6

📌코루틴(Coroutine)이란?

코루틴은 코루틴이 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드

1. 협력형 멀티태스킹

  • co(함께, 동시에)+Routine(특정한 일을 실행하기 위한 일련의 명령)
  • 코루틴 함수는 언제든지 중간에 나갈 수 있고 언제든지 나갔던 부분으로 들어올 수 있음
  • return이나 }을 만나지 않아도 언제든지 탈출 가능
  • suspend로 선언된 함수를 만난면 코루틴 밖으로 나감.

2. 동시성(시분할)프로그래밍 지원

  • 함수를 중간에 빠져나왔다가, 다른 함수에 진입하고, 다시 빠져나온 부분부터 다시 시작하는 특성
  • 사용자 입장에서는 위의 과정이 너무 빨라서 동시에 하는 것처럼 느껴짐
  • 병렬성과는 다른 개념

3. 비동기 처리를 쉽게 도와줌

코루틴(Coroutine)장점

1. 경량

  • 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있음.

2. 메모리 누수 감소

  • 구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행

3. 처리 도중 취소 가능

  • 실행 중인 코루틴 계층 구조를 통해 자동으로 취소 가능

코루틴 사용방법

👀먼저 코루틴을 사용하기 위해 알아야 할 키워드를 알아보자

  • CoroutineScope
  • CoroutineContext
  • Dispatcher
  • launch

CoroutineScope :코루틴의 범위, 코루틴 블록을 묶음으로 제어할 수 있는 단위이다.
CoroutineContext :코루틴을 어떻게 처리할지에 대한 여러가지 정보의 집합이다.
Dispatcher :Dispatcher는 CoroutineContext의 주요 요소이다.
CoroutineContext를 상속받아 어떤 스레드를 이용해서 어떻게 동작할 것인지 미리 정의해둔다.

  • Dispatchers.Main : 안드로이드의 경우 UI 스레드를 사용

launch :코루틴을 만들고 함수 본문의 실행을 해당하는 디스패처에 전달하는 함수

🍕사용방법
1. 사용할 Dispatcher을 결정
2. Dispatcher을 이용해서 CoroutineScope 만들기
3. CoroutineScope의 launch또는 async에 수행할 코드 블록을 넘기기

CoroutineScope(Dispatchers.Main).launch {
                        //작업
                        }

launch 와 async 는 CoroutineScope 의 확장함수 이며, 넘겨 받은 코드 블록으로 코루틴을 만들고 실행해주는 코루틴 빌더이다.

0개의 댓글