작성
·
308
1
강사님, 강의 내용에는 코루틴이 없어 학습중에 궁금한 점이 있어서 문의드립니다.
아래 코드의 실행 순서를 제가 정리 해봤습니다.
제가 코루틴의 suspend, resume을 잘 이해한게 맞나 궁금해서요.
물어볼 곳이 없어서, 죄송스럽게도 강사님께 문의를 하게 되었습니다.
강의 내용과는 관련이 없어 답변을 해주시면 감사하겠지만, 답변이 안달리다도 괜찮습니다.
감사합니다.
println("Coroutine Outer") 이 실행된다.
A 코루틴에서 delay를 만나, B 코루틴으로 실행권을 넘겨간다.
B 코루틴도 delay를 만나, A 코루틴으로 실행권을 넘겨준다.
1초가 지나고 A코루틴의 println("Coroutine A, Si")을 실행한다.
반복문에 의하여 A코루틴의 2번째 delay를 만나, 다시 B 코루틴으로 실행권을 넘겨준다.
B 코루틴도 1초가 지난 상태여서, 바로 println("Coroutine B, Si")을 실행한다.
반복문에 의하여 B코루틴의 2번째 delay를 만나, 다시 A 코루틴으로 실행권을 넘겨준다.
그 다음 4~7을 반복문이 끝날 때 까지 반복 후 코루틴이 종료된다.
fun main() = runBlocking {
// A 코루틴
launch {
repeat(5) { i ->
delay(1000L)
println("Coroutine A")
}
}
// B 코루틴
launch {
repeat(5) { i ->
delay(1000L)
println("Coroutine B")
}
}
println("Coroutine Outer")
}
fun <T> println(msg: T) {
kotlin.io.println("$msg [${Thread.currentThread().name}]")
}
답변 1
1
안녕하세요, 민영님!! 😊 질문 주셔서 감사드립니다!! 🙏
보내주신 코드와 설명을 읽어본 결과, 제가 이해한 것과 동일합니다!!
suspend function이나 코루틴이 재개되는 부분에 대해서 잘 이해하신 것 같습니다!! 👍
추가로 벌써 보셨을 수도 있지만, 코루틴과 관련해서 당근마켓 유튜브에 올라온 영상이 좋더라고요!!!
혹시 아직 보지 않으셨다면 봐보시는 것도 좋을 것 같습니다!
감사합니다!! 🙇
답변 감사합니다~~!!~!
유튜브도 봐보겠습니다~!