Simple&Natural

Coroutine Async 의 동작 시점 본문

언어/Java&Kotlin

Coroutine Async 의 동작 시점

Essense 2020. 10. 11. 11:51
728x90

 

Coroutine 의 Async는 Await 이전에 async를 호출한 시점부터 이미 동작을 시작하고

모든 작업이 완료된 이후에 await을 통해 결과를 반환한다.

 

결과에서 delay 이전의 출력 메시지는 무작위로 섞여 나올 수 있다.

각 출력이 독립적으로 실행되기 때문이다.

 

 

소스코드

@Test
    fun coroutineTest() = runBlocking {
        val taskAsync1 = CoroutineScope(Dispatchers.IO).async {
            println("Async1 working...")
        }
        val taskAsync2 = CoroutineScope(Dispatchers.IO).async {
            println("Async2 working...")
        }

        println("waiting...")
        delay(2000)
        println("done!")

        taskAsync1.await()
        println("Async1 complete")
        taskAsync2.await()
        println("Async2 complete")

    }

 

 

결과

Async1 working...
Async2 working...
waiting...
done!
Async1 complete
Async2 complete

 

728x90