Simple&Natural
Coroutine Async 의 동작 시점 본문
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
'언어 > Java&Kotlin' 카테고리의 다른 글
Java String Format 참고자료 (0) | 2020.12.16 |
---|---|
Shuffle 구현 (0) | 2020.10.30 |
Coroutine - withContext 와 coroutineScope 의 비교 (0) | 2020.08.29 |
자바 메모리 관리 - 스택&힙 (0) | 2020.06.25 |
코틀린 SAM 인터페이스의 람다식 관련 (0) | 2020.04.08 |