Skip to content

코틀린 코루틴 이해하기

Published: at 오전 07:49

Table of contents

Open Table of contents

코틀린 코루틴을 배워야하는 이유

안드로이드에서 코루틴 사용

안드로이드에서는 뷰를 다루는 스레드가 단 하나만 존재합니다.

이 스레드는 앱에서 가장 중요한 스레드라 블로킹되면 안 됩니다.

블로킹이 가능한 스레드를 먼저 사용하고 이후에 메인스레드로 전환합니다.

하지만 이 방식은 문제가 있습니다.

뷰를 열고 재빨리 닫으면 뷰가 열렸을 때 데이터를 가져와 처리하기 위해 스레드가 다수 생성됩니다. 생성된 스레드를 제거하지 않으면 스레드는 주어진 작업을 수행할 후 더 이상 존재하지 않는 뷰를 수정하려고 시도할 것입니다.

콜백

스레드의 비용 문제

대부분 스레드 스택의 기본 크기는 1MB입니다. 자바 최적화 덕분에 스레드의 메모리를 사용량이 1MB에 반드시 비례하지는 않지만, 스레드를 만들 때마다 여분의 메로리를 더 많이 사용하게 됩니다.

스레드의 비용 문제는 10만 명의 사용자가 데이터를 요청하는 백엔드 서비스를 모식화한 다음 코드를 통해 살펴볼 수 있습니다.

  1. 10만개의 스레드를 만들고 1초 동안 잠을 자게 만듭니다.
  2. 이 프로그램을 실행시키면 상당한 시간이 걸리거나 OutOfMemoryError 예외로 프로그램이 종료되는 것을 볼 수 있습니다. → 많은 수의 스레드를 실행하는데 드는 비용이 크기 떄문입니다.

코루틴

  1. 스레드를 재우는 대신 코루틴을 중단시킵니다.
  2. 1초 기다린 뒤에 모든 점을 출력하게 됩니다.

코틀린 코루틴