Coroutines 기초 알아보기

코루틴 스코프 빌더 사용

coroutineScope 일시 중단 기능 내에서 빌더를 사용하여 동시에 여러 작업을 수행할 수 있습니다.

doWorld suspend 함수 내에서 두 개의 동시 코루틴을 실행해 봅시다.

import kotlinx.coroutines.*

// doWorld와 "Done"을 순서대로 실행합니다.

fun main() = runBlocking { doWorld() println("Done") } // 두 섹션들을 모두 동시적으로 실행합니다 suspend fun doWorld() = coroutineScope { // this: CoroutineScope launch { delay(2000L) println("World 2") } launch { delay(1000L) println("World 1") } println("Hello") }

완전한 코드는 여기에서 찾을 수 있습니다

시작 블록 { … } 내 두 개의 코드가 동시에 실행되어 “World 1″이 1초 후에 먼저 출력되고 “World 2″가 2초 후에 출력됩니다.

doWorld의 coroutineScope는 둘 다 완료된 후에 종료되며, 그 후에야 doWorld가 반환되고 문자열 “Done”이 인쇄됩니다.

Hello
World 1
World 2
Done


다음 내용은 독자의 이해를 돕기 위해 번역자가 추가한 내용입니다.

*하나. 중괄호 { … } 안의 코드.

*2. 꼬마 코 루틴을 의미합니다.

*삼. 이전 코드는 다음과 같습니다.

import kotlinx.coroutines.*

fun main() = runBlocking { 
    launch {  
        delay(1000L) 
        println("World!
") } println("Hello") }

이 문서는 공식 코루틴 문서를 번역한 것입니다.

원래의: 코루틴 기본 사항 – 범위 작성기 , 코루틴 기본 사항 – 범위 작성기 및 동시성

원본 텍스트의 최종 편집: 2022년 6월 27일


코루틴 작업을 명시적으로 사용

시작하다 Coroutine Builder는 실행 중인 코루틴을 처리하고 완료될 때까지 명시적으로 기다리는 데 사용할 수 있습니다.

일하다 객체 반환 예를 들어 하위 코루틴이 완료될 때까지 기다린 다음 문자열 “Done”을 인쇄할 수 있습니다.

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job = launch { // 새로운 코루틴을 실행하고 그 Job에 대한 참조를 유지한다 
        delay(1000L)
        println("World!
") } println("Hello") job.join() // 자식 코루틴이 완료될 때까지 기다린다.

println("Done") }

완전한 코드는 여기에서 찾을 수 있습니다

이 코드는 다음 결과를 생성합니다.

Hello
World!
Done

이 문서는 공식 코루틴 문서를 번역한 것입니다.

원래의: 코루틴 기초 – 명시적 작업

원본 텍스트의 최종 편집: 2022년 6월 27일


코루틴은 가볍다

코루틴은 JVM 스레드보다 리소스 집약도가 낮습니다.

쓰레드를 사용할 때 JVM의 가용 메모리를 소진시키는 코드는 리소스 제한에 도달하지 않도록 코루틴을 사용하여 표현할 수 있다.

예를 들어, 다음 코드는 100,000개의 개별 코루틴을 실행하며 각각 5초 동안 대기하고 매우 적은 메모리를 사용하면서 마침표(‘.)를 인쇄합니다.

import kotlinx.coroutines.*

fun main() = runBlocking {
    repeat(100_000) { // 많은 수의 코루틴을 실행한다.

launch { delay(5000L) print(".") } } }

완전한 코드는 여기에서 찾을 수 있습니다

스레드를 사용하여 위의 프로그램을 작성하면(runBlocking 제거, 시작을 스레드로 대체, 지연을 Thread.sleep으로 대체) 많은 메모리를 소비하고 메모리 고갈을 유발합니다.


이 문서는 공식 코루틴 문서를 번역한 것입니다.

원래의: 코루틴 기본 사항 – 코루틴은 가볍습니다.

원본 텍스트의 최종 편집: 2022년 6월 27일


목차로 돌아가기

코루틴 가이드

언어로서 Kotlin은 다른 라이브러리가 코루틴을 사용할 수 있도록 표준 라이브러리에 최소한의 저수준 API를 제공합니다.

유사한 기능을 가진 다른 많은 언어와 달리 async 및 await는 K입니다.

translatedev.com