지연 Coroutine
- 지연 코루틴이란 즉시 실행 요청되지 않는 코루틴입니다.
- launch 함수의 start 인자로 CoroutineStart.LAZY를 넘기면 지연 코루틴이 생성됩니다.
- 지연 코루틴은 start 함수나 join 함수를 호출하면 실행됩니다.
- 즉시 실행만 원하면 start 함수를, 실행과 동시에 끝날 때까지 기다리려면 join 함수를 호출하면 됩니다.
import kotlinx.coroutines.*
fun main() = runBlocking<Unit> {
val startTime = System.currentTimeMillis()
val lazyJob: Job = launch(start = CoroutineStart.LAZY) {
println("[${getElapsedTime(startTime)}] launch 코루틴 지연 실행")
}
delay(3000L) // 3000밀리초간 대기
lazyJob.start() // 코루틴 실행 lazyJob.join()을 호출해도 실행됨
}
fun getElapsedTime(startTime: Long): String =
"지난 시간: ${System.currentTimeMillis() - startTime}밀리초"