Kotlin
-
Kotlin Coroutines(3)Kotlin 2021. 5. 27. 10:50
코루틴 블록 취소 delay() 함수 사용 delay() 함수에서 취소가 동작하고 코루틴 블록을 취소할수가 있다. fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) println("main: I'm tired of waiting!") job.cancel() job.join() println("main: Now I can quit.") } 결과 job: I'm sleeping 0 ... job: I'm sleeping 1 ... job: I'm sleeping 2 ... main: I'm tired of waiting! ma..
-
Kotlin Coroutines(2)Kotlin 2021. 5. 26. 14:35
코루틴 제어 코루틴을 시작하는 방법은 두 가지가 있으며 용도가 다릅니다 launch() 함수로 시작된 코루틴 블록은 Job 객체를 반환, 결과값을 반환하지 않는다. async() 함수로 시작된 코루틴 블록은 Deferred를 반환, await라는 일시 중지 함수로 결과를 반환한다 launch() - Job 반환받은 Job 객체로 코루틴 블록을 취소하거나, 다음 작업의 수행전 코루틴 블록이 완료 되기를 기다릴수 있다. fun main() = runBlocking { val job = launch { // launch a new coroutine and keep a reference to its Job delay(1000L) // non-blocking delay for 1 second (default ti..
-
Kotlin Coroutines(1)Kotlin 2021. 5. 22. 10:25
코루틴, Coroutines? Coroutines = Co + Routines Co는 협력을 Routines는 function을 의미한다. Kotlin Coroutines 특징 Asynchronous Cooperative multitasking Single-threaded Non-blocking 기본 개념 CoroutineScope 코루틴의 범위, 코루틴 블록을 묶음으로 제어할수 있는 단위 launch 또는 async를 사용하여 생성한 모든 코루틴을 추적한다. (launch, async는 CoroutineScope의 확장 함수) 실행중인 코루틴은 언제든지 scope.cancel()을 호출하여 취소할 수 있다. Android와 같은 일부 플랫폼에는 이미 viewModelScope, lifecycleScop..