Coroutine
[Coroutine] 4. Dispatcher과 launch, async를 이용해 Coroutine 붙이기
앞선 글까지 Dispatcher을 만드는 과정을 거쳤다. 이제부터 본격적으로 Coroutine을 만들기 시작할 것이다. Dispatcher에 Coroutine 붙이기 Dispatcher에 Coroutine을 붙이는 작업은 launch{ }와 aync{ } 두가지 메서드를 통해 가능하다.결과 반환이 없는 단순 작업에는 launch를 결과 반환이 필요한 작업에는 async를 사용한다. 결과 반환 반환타입 launch X Job async O Defered 결과를 반환하지 않는 launch launch는 결과를 반환하지 않고 launch 수행 시 job이 반환된다. with(CoroutineScope(Dispatchers.Main)) { val job: Job = launch { println(1) } } 결..
[Coroutine] 3. Coroutine의 Dispatcher 란 무엇인가?
Coroutine을 공부하면서 Dispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. Dispatcher 코루틴을 시작하게 되면, Dispatcher란 단어를 가장 먼저 접하게 된다. Dispatch란 한국어로 '보내다' 라는 뜻이다. 그렇다면 Dispatcher란 무엇을 보내는 것일까? 바로 스레드(Thread)에 코루틴(Coroutine)을 보낸다. 코루틴에서는 스레드 풀을 만들고 Dispatcher를 통해서 코루틴을 배분한다. 즉, 코루틴을 만든 다음 해당 코루틴을 Dispatcher에 전송하면 Dispatcher은 자신이 관리하는 스레드풀 내의 스레드의 부하 상황에 맞춰 코루틴을 배분한다. 이를 시각적으로 표현하면 다음과 같다. 1. ..
[Coroutine] 2. Coroutine 안드로이드에서 사용하기
Coroutine with Kotlin 코틀린에서 코루틴의 기능이 언어 내에 내장되어 있다. 따라서 코틀린을 사용하도록 Gradle을 설정한다면 별도의 설정 없이 일반적인 코루틴을 사용할 수 있게 된다. 하지만, 안드로이드에서 코루틴(Coroutine)을 사용하기 위해서는 안드로이드의 런타임을 위한 라이브러리를 세팅해주어야 한다. Android App 수준 모듈에 추가해야 할 라이브러리 두 개의 라이브러리(coroutine-core, coroutine-android)를 앱 수준의 gradle에 세팅하면 안드로이드에서 코루틴을 사용하기 위한 기본적인 세팅이 완료된다. coroutines-core 라이브러리는 코루틴을 사용하기 위한 공통적인 라이브러리이다. 보통의 어플리케이션의 경우 이 라이브러리만 있으면 ..
[Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가?
Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1과 같이 구성된다. 그림1의 Main Thread를 보자. JVM프로세스는 Main Thread가 종료되면 강제로 종료되며, JVM 프로세스에 속한 Thread들도 함께 강제로 종료된다. 그런데 Main Thread말고 다른 2개의 Thread가 보인다. 이 Thread들에서는 Main Thread와 마찬가지로 작업을 수행할 수 있으며, 이 Thread들은 종료되더라도 다른 Thread에 영향을 미치지 않는다. 안드로이드 앱을 예제로 들면 Main Thread는 가장 중요한 Thre..