async

반응형

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

    들어가며 코루틴을 공부하고나서 언젠가는 정리해야지 하고 있었는데, 이번에 시간이 있어서 정리를 하게 되었다. 아래 내용을 모두 이해할 수 있다면 코루틴의 기초적인 부분은 모두 이해했다고 볼 수 있으며, 왠만큼 복잡한 비동기 작업도 무난히 처리할 수 있다고 생각한다. 목차 [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1 kotlinworld.com [Corout..

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

    Deferred란 Deferred는 직역하면 연기라는 뜻을 가진다. "결과값 수신을 연기한다"라는 뜻인데, 이는 미래의 어느 시점에 결과값이 올 것을 뜻한다. Deferred의 의미와 같이 "Deferred는 결과값을 수신하는 비동기 작업" 이라고 정의될 수 있다. Deferred는 Job이다. public interface Deferred : Job { public suspend fun await(): T public val onAwait: SelectClause1 .. } Deferred는 결과가 있는 비동기 작업을 수행하기 위해 결과 값이 없는 Job을 확장하는 인터페이스이다. 즉, Deferred는 Job이며, 이로 인해 Deferred는 Job의 모든 특성을 갖는다. 8번 글이었던 Job의 상태..

    [Coroutine] 5. suspend fun의 이해

    일시중단 가능한 코루틴 코루틴은 기본적으로 일시중단 가능하다. launch로 실행하든 async로 실행하든 내부에 해당 코루틴을 일시중단 해야하는 동작이 있으면 코루틴은 일시 중단된다. 예시로 보는 일시중단 일시 중단 가능하다는 것이 무엇인지 알기 위해 을 보자. 위 그림을 코드로 표현하면 다음과 같다. 주석의 숫자와 그림1의 숫자를 일치하도록 하였다. fun exampleSuspend(){ val job3 = CoroutineScope(Dispatchers.IO).async { // 2. IO Thread에서 작업3를 수행한다. (1..10000).sortedByDescending { it } // 5. 작업3가 완료된다. } val job1 = CoroutineScope(Dispatchers.Main..

    [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) } } 결..

반응형