코틀린 코루틴이란 ?
코틀린 코루틴
Kotlin 코루틴은 비동기 및 비차단 코드를 보다 간결하고 읽기 쉬운 방식으로 작성하기 위한 강력한 도구입니다. while
이를 통해 개발자는 루프 및 if
명령문 과 같은 친숙한 제어 흐름 구조를 계속 사용하면서 여러 스레드에서 실행되는 코드를 작성할 수 있습니다 .
코루틴이란 무엇입니까?
코루틴은 스레드의 경량 비차단 버전입니다. 상당한 양의 시스템 리소스를 소비하는 스레드와 달리 코루틴은 매우 가볍고 빠르고 쉽게 만들고 삭제할 수 있습니다. 따라서 많은 소규모 동시 작업을 수행해야 하는 응용 프로그램에서 사용하기에 적합합니다.
코루틴은 협력적 멀티태스킹 개념을 기반으로 합니다. 즉, 스레드와 달리 서로 독립적으로 실행되지 않습니다. 대신 단일 스레드에서 실행되고 교대로 실행됩니다. 이를 통해 시스템 리소스를 보다 효율적으로 사용할 수 있을 뿐만 아니라 실행 순서를 보다 잘 제어할 수 있습니다.
Kotlin에서 코루틴을 사용하는 방법
Kotlin은 Kotlin 표준 라이브러리 위에 구축된 코루틴 작업을 위한 다양한 함수와 라이브러리를 제공합니다. launch
코루틴을 시작하려면 코드 블록을 인수로 사용하여 새 코루틴에서 실행하는 함수를 사용할 수 있습니다 . 예를 들어 다음 코드는 백그라운드에서 실행되고 "Hello, World!"를 인쇄하는 새 코루틴을 만듭니다. 매 초:
launch {
while (true) {
println("Hello, World!")
delay(1000)
}
}
이 함수를 사용하여 async
새 코루틴을 시작하고 코루틴 Deferred
의 결과를 나타내는 객체를 반환할 수도 있습니다. 함수를 사용 await()
하여 코루틴의 결과를 기다리고 값을 검색할 수 있습니다.
val deferred = async {
// perform some computation
5 + 5
}val result = deferred.await()
println(result) // prints "10"
코루틴 구조화
코루틴을 작성할 때 이해하고 유지하기 쉬운 방식으로 구성하는 것이 중요합니다. 함수를 사용 runBlocking
하여 코루틴을 실행할 수 있는 범위를 만들 수 있습니다. 이 함수는 새로운 코루틴을 만들고 범위 내의 모든 코루틴이 완료될 때까지 현재 스레드를 차단합니다.
runBlocking {
launch {// coroutine 1
}
launch {// coroutine 2
}
}
coroutineScope
이 함수를 사용하여 코루틴의 새 범위를 만들 수도 있습니다 . 이 함수는 새로운 코루틴을 생성하고 현재 스레드를 차단하지 않습니다. 대신 반환하기 전에 범위 내의 모든 코루틴이 완료될 때까지 기다립니다.
coroutineScope {
launch {// coroutine 1
}
launch {// coroutine 2
}
}
코루틴
취소
cancel
시작 또는 비동기에 의해 반환된 Job 인스턴스의 메서드를 사용하여 코루틴을 취소할 수 있습니다 .
코드 복사
val job = launch {
while (isActive) {
// perform some computation
}
}
job.cancel()
예외 처리
코루틴은 던지고 잡을 수 있습니다. 일반 코드와 같은 예외. 코루틴에서 예외가 발생하면 코루틴 범위에서 가장 가까운 예외 처리기에 의해 처리됩니다. 예외 처리기가 발견되지 않으면 예외가 처리되거나 최상위 범위에 도달할 때까지 상위 범위 등으로 예외가 전파됩니다.
try-catch
블록을 사용하여 코루틴에서 예외를 처리 할 수 있습니다 .
launch {
try {
// perform some computation that may throw an exception
} catch (e: Exception) {
// handle exception
}
}
또한 이 supervisorScope
함수를 사용하여 자식 코루틴에서 발생한 예외를 처리하고 복구할 수 있는 범위를 만들 수 있습니다.
supervisorScope {
launch {// perform some computation that may throw an exception
}
launch {// another coroutine that may also throw an exception
}
}
결론
코루틴은 Kotlin에서 비동기 및 비차단 코드를 작성하기 위한 강력한 도구입니다. 동시 코드를 작성하는 더 읽기 쉽고 간결한 방법을 제공하며 기존 스레드보다 더 효율적입니다. 예외를 구조화, 취소 및 처리하는 기능을 통해 코루틴은 복잡한 동시성 문제를 처리하는 훌륭한 방법을 제공합니다.
그러나 코루틴은 주의해서 사용해야 하며 프로덕션에서 코루틴을 사용하기 전에 동시성의 기본 개념과 코루틴이 작동하는 방식을 이해하는 것이 중요합니다.