앞서 CoroutineDispatcher을 만드는 방법을 알아봤다. 이번에는 코루틴을 만들어 CoroutineDispatcher에 실행 요청하는 방법을 알아보자. CoroutineDispatcher에 코루틴 실행 요청하기 CoroutineDispatcher에 코루틴을 실행 요청하는 작업은 대표적으로 launch와 aync 두 가지 메서드를 통해 가능하다. 결과 반환이 없는 단순 작업에는 launch를 결과 반환이 필요한 작업에는 async를 사용한다. 결과 반환 반환타입 launch X Job async O Defered 결과를 반환하지 않는 launch launch는 결과를 반환하지 않고 launch 수행 시 job이 반환된다. val job: Job = launch { println(1) } 결과를 ..
분류 전체보기
Coroutine을 공부하면서 CoroutineDispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. CoroutineDispatcher 란 무엇인가? 코루틴을 시작하게 되면, CoroutineDispatcher란 단어를 가장 먼저 접하게 된다. CoroutineDispatcher은 Coroutine과 Dispatcher 단어의 합성어이다. 여기서 Coroutine은 코루틴이며, Dispatch란 한국어로 '보내다' 라는 뜻이다. 즉, CoroutineDispatcher은 코루틴을 보내는 객체를 뜻한다. 그렇다면 CoroutineDispatcher은 코루틴을 어디로 보낼까? 바로 스레드(Thread)로 보낸다. 모든 작업은 스레드 위에서 실행..
코틀린과 코루틴 코루틴은 코틀린 언어의 기본 기능으로 내장되어 있다. 따라서 별도 설정 없이도 코루틴을 위한 저수준 API를 사용할 수 있다. 하지만, 언어에 내장된 기능만으로는 launch나 async 같은 고수준 API는 사용할 수 없다. launch나 async 같은 고수준 API는 Jetbrains 사에서 배포한 kotlinx-coroutines 라이브러리의 기능으로, coroutine-core(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3) 라이브러리에 대한 의존성을 설정해줘야 사용할 수 있다. 이를 위해서는 다음과 같은 블록을 build.gradle 파일에 추가해야 한다. dependencies { implementation 'org.jetbrai..
Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1과 같이 구성된다. 그림1의 메인 스레드(Main Thread)를 보자. JVM프로세스는 메인 스레드가 main 함수를 실행하며 시작되며, 만약 프로세스 내에 사용자 스레드가 메인 스레드 밖에 없는 상황에서는 메인 스레드가 종료되면 프로세스 또한 강제로 종료되는 특성을 가진다. 이때 메인 스레드는 한 번에 하나의 작업을 실행 가능하다. 그런데 그림에서는 메인 스레드말고 다른 2개의 스레드(Thread)가 보인다. 이 스레드(Thread)들은 사용자에 의해 생성되는 스레드로, 메인 스..
Jetpack Compose Jetpack Compose는 안드로이드 앱의 UI를 쉽게 디자인하고 빌드하기 위한 라이브러리이다. Compose가 만들어진 목표는 다음과 같다. 맞춤 레이아웃을 쉽게 작성 고성능을 발휘 맞춤 레이아웃을 쉽게 작성 기존 안드로이드에서 xml로 View를 그리고 코드 상에서 setContentView나 inflate 메서드를 이용해 해당 View 을 로드해야 했다. Jetpack Compose를 이용하면 이전과 달리 compose에서는 코드 상에서 UI에 대한 모든 관리를 하게 된다. 이로 인해 View가 작성되기 쉬워지게 된다. 기존 방식 예를 들어 textView에 동적으로 "Kotlin World Blog" 라는 텍스트를 출력하고 싶다고 해보자. 기존에는 다음과 같은 방식..