Kotlin, 코루틴과 비동기처리

5352 단어 kotlinkotlin

코루틴을 사용하기 위해서는 아래 패키지를 import 해야한다

import kotlinx.coroutines.*

launch vs async

반환 값이 있는지의 차이이다.

  • launch
    : 반환 값이 없는 Job 객체

  • async
    : 반환 값이 있는 Deffered 객체

둘다 람다 함수 형태를 가지고 있다

import kotlinx.coroutines.*

fun main() {        
    
    // runBlocking 내에서는 코루틴이 모두 실행 될 때까지, 메인 루틴 종료를 대기시킴
    runBlocking {
        var a = launch {
            for(i in 1..5) {
                println(i)
                delay(10)
            }
        }
        
        var b = async {
            "async 종료"
        }
        
        println("async 대기")
        println(b.await()) // async가 끝날 때 까지 대기함
        
        println("launch 대기")
        a.join() // launch가 끝날 때 까지 대기함
        println("launch 종료")
    }
}

코루틴 중단

import kotlinx.coroutines.*

fun main() {        
    
    // 코루틴이 모두 실행 될 때까지, 메인 루틴 종료를 대기시킴
    runBlocking {
        var a = launch {
            for(i in 1..5) {
                println(i)
                delay(10)
            }
        }
        
        println("launch 취소")
        a.cancel() // 코루틴 작업을 중간에 취소 시킴
        println("launch 종료")
    }
}

좋은 웹페이지 즐겨찾기