들어가기 전에
코틀린은 코루틴을 통해 복잡성을 줄이고도 손쉽게 일시 중단하거나 다시 시작하는 루틴을 만들어낼 수 있습니다. 코루틴은 스레드는 아니지만 멀티태스킹을 실현하는 목적에서는 동일하다고 볼 수 있습니다. 단, 스레드처럼 독립된 스택이나 문맥 교환같은 면에서는 코루틴이 훨씬 비용이 낮아 가벼운 스레드라고도 불리고 있죠. 그럼 한번 알아봅시다.
핵심 키워드
- 코루틴(coroutine)
- 지연(suspend)
- 중단(Stopped)
- 스케줄링(scheduling)
학습하기
프로세스나 스레드는 해당 작업을 중단(stopped)하고 다른 루틴을 실행하기 위한 문맥 교환을 시도할 때 많은 비용이 듭니다. 코루틴은 문맥 교환 없이 해당 루틴을 일시 중단(suspended)해서 이러한 비용을 줄일 수 있습니다. 다르게 표현하면 운영체제가 스케줄링에 개입하는 과정이 필요하지 않다는 것입니다. 또한 일시 중단은 사용자가 제어할 수 있습니다.
지연(suspend)
먼저 코루틴에서 사용되는 함수는 suspend로 선언된 지연 함수여야 코루틴 기능을 사용할 수 있습니다. suspend로 표기함으로서 이 함수는 실행이 일시 중단(suspended)될 수 있으며 필요한 경우에 다시 재개(resume)할 수 있게 됩니다.
launch 코루틴 빌더 생성
이렇게 launch를 통해 코루틴 블록을 만들어내는 것을 코루틴 빌더의 생성이라고 합니다. launch 이외에도 코루틴 블록을 생성할 수 있는 몇 가지 방법이 있는데 차근차근 살펴보겠습니다. launch는 현재 스레드를 차단하지 않고 새로운 코루틴을 실행할 수 있게 하며 특정 결과 값 없이 Job 객체를 반환합니다.
comment
라이브러리 추가할 때, build.gradle.kts 에서 dependencies {} 블록 내에
예제 코드 중
가 아니고
로 해야 동작하는 것 같습니다
1. 라이브러리 추가할때 최신버전 intellij 에서는 main에 넣어야 인식됨
2. Unresolved reference: Kotlinx 라는 오류가 뜨면서 예제가 실행되지 않음
참고:https://stackoverflow.com/questions/31712046/kotlin-unresolved-reference-in-intellij