Coroutines/Coroutine Basics

Job의 상태 Job의 상태는 생성, 실행 중, 실행 완료, 취소 중, 취소 완료 총 5가지이다. 생성(New) : Job이 생성된다. 실행 중(Active) : Job이 실행 중이다. 실행 완료(Completed) : Job의 실행이 완료되었다. 취소 중(Cancelling) : Job이 취소되는 중이다. Job이 취소되면 리소스 반환 등의 작업을 해야 하기 때문에 취소 중 상태가 있다. 취소 완료(Cancelled) : Job의 취소가 완료되었다. 앞선 글에서 다룬 내용 : Job의 생성과 실행 앞선 글에서 우리는 Job의 생성과 실행을 다루었다. launch를 통한 Job의 생성 및 실행 launch에 CoroutineStart.LAZY 옵션을 추가하여 Job을 바로 실행되지 않게 만들기 Corou..
앞선 4번 글에서 코루틴 빌더인 launch 메서드를 사용했을 때 Job이 생성되는 것을 볼 수 있었다. Job은 결과가 없는 비동기 작업으로 예외가 발생하지 않는 이상 끝까지 수행되었었다. 이번 글에서는 Job 비동기 작업을 실행하는 시점과, 실행 방법을 조절하는 것에 대해 더욱 깊숙이 다뤄볼 것이다. Job의 생성 코루틴 빌더인 launch 메서드를 별도의 옵션 없이 사용하면 생성된 비동기 작업(Job)은 생성 후에 바로 실행된다. fun main() = runBlocking { val job = launch { println(1) } } // 1 출력 예를 들면 위와 같이 Job을 생성할 경우 이 Job은 생성과 동시에 실행된다. 이러한 방식으로 Job을 생성하면 필요한 위치에 바로 생성해서 실행시..
프로세스의 시작점 main 함수 main 함수는 모든 프로세스의 시작점이다. 보통 프로세스가 실행되면, 메인스레드에서 main 함수가 실행되며, main 함수의 실행이 끝나면 종료된다. 메인 스레드는 사용자 스레드 중 하나이며, 프로세스는 사용자 스레드가 모두 종료되면, 종료되는 특성을 가지기 때문에 메인스레드만을 사용해 실행되는 프로세스는 메인 스레드의 사용이 종료되는 지점(main 함수의 실행이 완료되는 시점)에 종료된다. 예를 들어 위와 같은 코드를 실행하면 다음과 같은 결과가 나온다. main 함수 입니다. Process finished with exit code 0 자 이제 그림2와 같은 코드를 실행해보자. 그림2에서는 Main Thread가 아닌 IO Thread에 코루틴을 실행 요청해 pri..
일시 중단 함수란 무엇인가? suspend fun으로 선언되는 일시 중단 함수는 함수 내에 일시 중단 지점을 포함할 수 있는 특별한 함수이다. 코루틴은 언제든지 일시 중단하고, 스레드를 양보할 수 있다는 것을 기억하자. 일시 중단 함수는 코루틴에서 실행되는 일시 중단 지점이 포함된 코드들을 재사용할 수 있는 코드의 집합으로 만드는 역할을 한다. 예를 들어 다음과 같은 코드를 살펴보자. fun main() = runBlocking { delay(100L) println("Hello Coroutines") delay(100L) println("Hello Coroutines") } 이 코드에서는 delay 함수와 println 함수가 반복된다. 따라서 이 코드는 다음과 같이 함수로 만들 수 있다. fun de..
앞서 CoroutineDispatcher을 만드는 방법을 알아봤다. 이번에는 코루틴을 만들어 CoroutineDispatcher에 실행 요청하는 방법을 알아보자. CoroutineDispatcher에 코루틴 실행 요청하기 CoroutineDispatcher에 코루틴을 실행 요청하는 작업은 대표적으로 launch와 aync 두 가지 메서드를 통해 가능하다. 결과 반환이 없는 단순 작업에는 launch를 결과 반환이 필요한 작업에는 async를 사용한다. 결과 반환 반환타입 launch X Job async O Defered 결과를 반환하지 않는 launch launch는 결과를 반환하지 않고 launch 수행 시 job이 반환된다. val job: Job = launch { println(1) } 결과를 ..
Dev.Cho
'Coroutines/Coroutine Basics' 카테고리의 글 목록 (3 Page)