Android Jetpack

What is Coroutine?

----___<<<<< 2022. 4. 10. 04:23

 간단하게 코루틴에 대해서 잠시 보고 가겠습니다.

 

 강의가 뒤에 ROOM과 Retrofit에 대해서 알아보는 순서로 되어 있다 보니, ROOM과 Retrofit을 쓰면서 간단하게 ViewModel에서 데이터를 다루는 로직을 넣어놨는데, 그 때 코루틴을 잠시 사용합니다.

 

 저희가 코틀린을 사용하다 보면, 앞이 코(Ko)라는 단어가 있죠. 그러면 이게 코루틴의 코와 같은 것인가 보면

 

 코루틴은 코(co)루틴(routine)입니다.

 

https://ko.wikipedia.org/wiki/%EC%BD%94%EB%A3%A8%ED%8B%B4

 

 위의 협동 루틴 어쩌고 하는 설명들이 나와 있고 아래에는 다양한 언어들에서 지원한다 라고 나와있습니다.

 

https://ko.wikipedia.org/wiki/%EC%BD%94%EB%A3%A8%ED%8B%B4

 저도 코틀린에서밖에 코루틴을 사용해보지 않았기 때문에, 다른 언어는 잘 모르겠습니다.

 

 그런데 여기까지 하면 협동 루틴 어쩌고 하면서 나와있는데, 잘 이해가 가지 않습니다.

 

 그러면 구글 공식문서를 한번 가보겠습니다.

 

https://developer.android.com/kotlin/coroutines?hl=ko

 

 위의 설명들이 나와 있습니다.

 

 여기에서 저희가 집중해서 볼 것은 

 

코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다.

 

 라고 되어 있는 글입니다.

 

 우선 비동기라는 개념에 대해서 헷갈리는 분들을 위해 한번 잠시 설명하고 가겠습니다.

 

 제가 간단하게 된장찌개 요리를 한다고 생각해볼게요.

 

 

 된장찌개 요리를 한다면, 저희가 아무렇지도 않게 하고 있는 것들이 비동기 작업입니다.

 

 물 끓이는 동안

 두부썰고 가지썰고 버섯넣고

 물 끓고 난 다음 재료 넣고

 밥 하고 등등을 하고 있죠?

 

 만약에 이 친구들을 동기적으로 한다면

 

 물 다 끓여지고 난 다음 가지 썰고 된장찌개 다 된 다음 밥 하고 이런 순서대로 진행하죠.

 

 이렇게 비동기에 대해서 잠시 봤는데요

 

 아니, 비동기적으로 안드로이드에서 실행할 수 있는 것은 많잖아?? 내가 왜 이거 배워서 해야해? 라는 생각이 들 수도 있습니다.

 

 네 맞습니다.

 

  하지만 코루틴에 대한 설명을 좀 더 보다보면 Callback Hell을 벗어날 수 있다 라고 하는 설명이 나옵니다.

 

 기존의 비동기 작업을 통해서 하면 callback hell이라고 하는 친구들을 벗어날 수 있습니다.

 

 

https://www.youtube.com/watch?v=ZTDXo0-SKuU 

 

 자, 그러면 다음 번에 간단한 예제를 통해서 어떻게 해보는지 알아보겠습니다.