Kotlin5 Coroutine - 5. suspending function, async https://kotlinlang.org/docs/composing-suspending-functions.html Composing suspending functions | Kotlin kotlinlang.org suspending function suspend fun doSomethingUsefulOne(): Int { delay(1000L) // pretend we are doing something useful here return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // pretend we are doing something useful here, too return 29 } val time = measureTimeMillis.. 2022. 4. 4. Coroutine - 4. Cancel, isActive https://kotlinlang.org/docs/cancellation-and-timeouts.html#cancelling-coroutine-execution Cancellation and timeouts | Kotlin kotlinlang.org cancel cancel을 통해 job을 취소할 수 있다. 공식 문서에서 여러 예제에서 cancel을 할 때 어떤 상황인지에 따라서 예상한 결과가 나오는 경우도 있고 안 나온 경우도 있다. launch에 Dispatchers.Default 을 통해 메인 스레드가 아닌 스레드를 사용할 수 있다. val startTime = System.currentTimeMillis() val job = launch(Dispatchers.Default) { var nextPr.. 2022. 3. 24. Coroutine - 3. job, join job launch는 job을 반환한다. job 객체를 통해 launch가 종료될 때까지 기다릴 수 있다. 반환받은 job을 따로 실행하지 않아도 원래의 launch처럼 실행된다. job.join()가 없다면 Hello 이후 Done 이후 job이 실행되지만 job.join()을 통해 Hello 이후 job이 종료될 때까지 기다렸다가 종료되고 Done이 나온다. val job = launch { // launch a new coroutine and keep a reference to its Job delay(1000L) println("World!") } println("Hello") job.join() // wait until child coroutine completes println("Done") .. 2022. 3. 17. Coroutine - 2. Structured concurrency, suspend, coroutineScope Structured concurrency : 구조적인, 계층적인 코루틴. 새 코루틴은 한 코루틴스코프 안에서 만들어 질 수 있다. https://kotlinlang.org/docs/coroutines-basics.html#structured-concurrency Coroutines basics | Kotlin kotlinlang.org suspend launch를 통해 코루틴을 만들 수 있는데 이 코루틴안에서 사용할 함수는 suspend 키워드를 사용해야 한다. 그런데 무작정 쓸 건 아니고 suspending 함수일 때에 suspend 키워드를 쓴다. delay와 같은 함수없는 경우라면 suspend를 쓰지 않아도 된다. fun main() = runBlocking {= launch { doWorld().. 2022. 3. 12. Coroutine - 1. launch, runBlocking, delay 코루틴은 뭘까. A coroutine is an instance of suspendable computation. https://kotlinlang.org/docs/coroutines-basics.html#your-first-coroutine Coroutines basics | Kotlin kotlinlang.org 개념적으로 스레드와 비슷하다. 그런데 하나의 스레드에서만 돌아가는 건 아니고 멈췄다가 다른 스레드에서 재개할 수 있다고 한다. launch는 코루틴 빌더이다. 새 코루틴을 만들고 launch내의 코드가 새 코루틴에서 실행되는데 다른 나머지 코드와 같이 실행된다. delay는 코루틴이 잠들게 된다. 이 때 다른 코루틴이 delay로 인해 잠든 코루틴이 쓰던 스레드를 사용할 수 있다. runBl.. 2022. 3. 10. 이전 1 다음