Coroutines/Coroutine Basics

[Coroutine] Kotlin을 위한 코루틴(Coroutine) 정리 - Coroutines for Android and Kotlin

Kotlin Coroutines 공식 기술 문서 번역이 GitHub 오픈소스로 배포되었습니다. Starganizer가 되어 오픈소스를 지지해주세요.

 

Kotlin Coroutines 공식 문서 번역을 시작하며 · GitBook

Kotlin Coroutines 공식 문서 번역을 시작하며 Kotlin Coroutines는 Kotlin을 위한 강력한 비동기 솔루션이다. 안드로이드 실무에서는 한동안 높은 점유율을 자랑한 RxJava를 Coroutines가 대체하고 있으며, 새로

seyoungcho2.github.io

들어가며

코루틴을 공부하고나서 언젠가는 정리해야지 하고 있었는데, 이번에 시간이 있어서 정리를 하게 되었다. 아래 내용을 모두 이해할 수 있다면 코루틴의 기초적인 부분은 모두 이해했다고 볼 수 있으며, 왠만큼 복잡한 비동기 작업도 무난히 처리할 수 있다고 생각한다. 

 

목차

[Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가?

 

[Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가?

Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1

kotlinworld.com

[Coroutine] 2. Coroutine 안드로이드에서 사용하기

 

[Coroutine] 2. Coroutine 안드로이드에서 사용하기

Coroutine with Kotlin 코틀린에서 코루틴의 기능이 언어 내에 내장되어 있다. 따라서 코틀린을 사용하도록 Gradle을 설정한다면 별도의 설정 없이 일반적인 코루틴을 사용할 수 있게 된다. 하지만, 안

kotlinworld.com

[Coroutine] 3. Dispatcher 란?

 

[Coroutine] 3. Coroutine Dispatcher 란 무엇인가?

Coroutine을 공부하면서 Dispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. Dispatcher  코루틴을 시작하게 되면, Dispatcher란 단어를 가장 먼

kotlinworld.com

[Coroutine] 4. Dispatcher에 launch, async를 이용해 Coroutine 붙이기

 

[Coroutine] 4. Coroutine Dispatcher과 launch, async를 이용해 Coroutine 붙이기

앞선 글까지 Dispatcher을 만드는 과정을 거쳤다. 이제부터 본격적으로 Coroutine을 만들기 시작할 것이다. Dispatcher에 Coroutine 붙이기 Dispatcher에 Coroutine을 붙이는 작업은 launch{ }와 aync{ } 두가지..

kotlinworld.com

[Coroutine] 5. suspend fun의 이해

 

[Coroutine] 5. suspend fun의 이해

일시중단 가능한 코루틴 코루틴은 기본적으로 일시중단 가능하다. launch로 실행하든 async로 실행하든 내부에 해당 코루틴을 일시중단 해야하는 동작이 있으면 코루틴은 일시 중단된다. 예시로

kotlinworld.com

[Coroutine] 6. Job Lazy하게 생성 및 실행하기

 

[Coroutine] 6. Coroutine Job Lazy하게 생성 및 실행하기 : CoroutineStart.LAZY를 이용하여 Job을 Lazy하게 생성

앞선 4번 글에서 코루틴 빌더인 launch 메서드를 사용했을 때 Job이 생성되는 것을 볼 수 있었다. Job은 결과가 없는 비동기 작업으로 예외가 발생하지 않는 이상 끝까지 수행되었었다. 이번 글에서

kotlinworld.com

[Coroutine] 7. Job 상태 관리하기

 

[Coroutine] 7. Coroutine Job 상태 관리하기

Job의 상태 Job의 상태는 생성, 실행 중, 실행 완료, 취소 중, 취소 완료 총 5가지이다. 생성(New) : Job이 생성된다. 실행 중(Active) : Job이 실행 중이다. 실행 완료(Completed) : Job의 실행이 완료되었다...

kotlinworld.com

[Coroutine] 8. Job의 상태 변수 : isActive, isCancelled, isCompleted

 

[Coroutine] 8. Coroutine Job의 상태 변수 isActive, isCancelled, isCompleted 알아보기

Job의 상태 변수 : isActive, isCancelled, isCompleted Job의 상태 변수는 세가지가 있는데 <그림4>의 방식으로 접근이 가능하다. 이 상태 변수들은 다음과 같이 설명될 수 있다. isActive: Job이 실행중인지 여..

kotlinworld.com

[Coroutine] 9. Job Exception Handling

 

[Coroutine] 9. Coroutine Job에서 Exception이 발생했을 때 Exception Handling을 하는 방법

이번 글에서는 Job의 Exception을 Handling하는 방법을 살펴볼 것이다. Exception을 Handling하는 방법은 invokeOnCompletion을 이용한 방법과 CoroutineExceptionHandler 을 이용하는 방법 이 있다. 먼저 invoke..

kotlinworld.com

[Coroutine] 10. Deferred를 이용한 결과값 수신

 

[Coroutine] 10. Deferred를 이용한 결과값 수신

Deferred란 Deferred는 직역하면 연기라는 뜻을 가진다. "결과값 수신을 연기한다"라는 뜻인데, 이는 미래의 어느 시점에 결과값이 올 것을 뜻한다. Deferred의 의미와 같이 "Deferred는 결과값을 수신하는

kotlinworld.com

[Coroutine] 11. CoroutineContext다루기

 

[Coroutine] 11. CoroutineContext다루기

CoroutineContext 앞서 우리는 다음의 내용들을 배웠다. Dispatcher: 코루틴이 실행될 스레드 풀을 잡고 있는 관리자 CoroutineExceptionHandler: 코루틴에서 Exception이 생겼을 때의 처리기 그런데 이 두 가지..

kotlinworld.com

[Coroutine] 12. SupervisorJob를 이용한 Exception Handling

 

[Coroutine] 12. SupervisorJob를 이용한 Exception Handling

Coroutine의 Exception Handling Coroutine은 비동기 프로그래밍을 위한 일시중단가능한 경량 스레드이기 때문에 코루틴 내부에서 코루틴이 수행될 수 있으며, 그 깊이는 무한해질 수 있다. 하지만, 코루틴

kotlinworld.com

[Coroutine] 13. supervisorScope를 이용한 Exception Handling

 

[Coroutine] 13. supervisorScope를 이용한 Exception Handling

블록 내부의 모든 코루틴에 SupervisorJob()을 설정 : supervisorScope 앞선 12번글에서 SupervisorJob을 이용해 Error을 Handling하는 방법을 알았다. 하지만, 매번 CoroutineContext에 SupervisorJob을 설정할..

kotlinworld.com

 

부록

[Coroutine 부록] 1. main 함수 suspend fun으로 만들기

 

[Coroutine 부록] 1. Kotlin main 함수를 Coroutine을 사용하기 위한 suspend fun으로 만들기

프로세스의 시작점 main 함수  main 함수란 모든 프로세스의 시작점이다. 보통의 프로그램은 main함수에서 시작해서 main함수가 끝나면 종료된다. main함수를 실행하는 스레드가 Main Thread이며, main함

kotlinworld.com

[Coroutine 부록] 2. Thread 및 ThreadPool 만들기

 

[Coroutine 부록] 2. Coroutine Thread 및 ThreadPool 만들기

사실상 안드로이드 개발을 하면서는 Thread 혹은 Thread Pool을 만들 일이 거의 없다. 이미 만들어진 Dispatcher을 사용하는 것만으로 충분하기 때문이다. 하지만, 단순한 코틀린 프로그래밍이라면 Thread

kotlinworld.com

[Coroutine 부록] 3. withContext 사용해 join, await 대체하기

 

[Coroutine 부록] 3. withContext 사용해 join, await 대체하기

기존에 다른 코루틴에 보내진 작업의 결과를 수신하려면 다음과 같이 코드를 만들어야 했다 suspend fun main() { val deferred: Deferred = CoroutineScope(Dispatchers.IO).async { "Async Result" } val result..

kotlinworld.com

기타

Coroutine(코루틴)과 Subroutine(서브루틴)의 차이 - Coroutine이란 무슨 뜻일까?

 

Coroutine(코루틴)과 Subroutine(서브루틴)의 차이 - Coroutine이란 무슨 뜻일까?

루틴이란 무엇인가? 우리는 Routine을 운동 루틴 혹은 공부 루틴과 같은 '특정한 일을 하기 위한 일련의 처리 과정'이란 뜻으로 사용한다. 비슷하게 전통적으로 프로그래밍에서는 루틴을 '특정한

kotlinworld.com

 

코루틴 안드로이드

[Coroutine Android] Activity, ViewModel에서 올바른 CoroutineScope 사용법

 

 

 

 

*위 글의 저작권은 모두 KotlinWorld Blog 주인에게 있습니다. 무단 복제나, 복사는 허용하지 않습니다.

반응형

 

이 글의 저작권은 Dev World 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com