Hello, Android!

runBlocking 본문

Kotlin

runBlocking

lwndnjs93 2020. 9. 6. 17:40

- runBlocking

runBlocking은 새로운 코루틴을 실행하고, 해당 코루틴이 완료되기 전까지 현재 스레드를 블로킹 한다

위 예제에서는 메인 함수 자체가 코루틴에서 실행이 된다

블로킹으로 움직이기때문에 내부의 코루틴이 종료될때까지 자동으로 블로킹한다

그렇기때문에 별도로 내부 코루틴이 종료될때까지 기다리게 하지않아도

아래와 같은 결과가 나온다

 

만약 코루틴의 작업이 완료되는것을 기다리기 위해서는 Job객체의 join() 함수를 사용한다

main내부의 두번째 코루틴에서 job.join으로 인해

print in main 이 출력되고 첫번째 코루틴이 끝날때까지 기다린 뒤

두번째 내부 코루틴이 실행된다

 

- async 함수의 시작 시점 조절

async함수는 context, start, block 세개의 매개변수를 받는다

context - 코루틴 문맥

start - async함수 시작 시점

block - 코루틴 실행 코드

셋 중에 start매개변수로 async 함수의 시작 시점을 조절할수 있다

 

매개변수 start에 디폴트로 설정된 CoroutineStart 항목을 살펴보면

DEFAULT, LAZY, ATOMIC, UNDISPATCHED네가지가 있으며 그 중에 LAZY를 사용하게 되면

코루틴의 함수를 호출하거나 await 함수를 호출하는 시점에서 async가 실행되도록 할수 있다

 

'Kotlin' 카테고리의 다른 글

코루틴의 동작 제어  (0) 2020.09.13
코루틴의 문맥  (0) 2020.09.12
코루틴 launch, async  (0) 2020.09.05
스레드  (0) 2020.08.29
I/O 입출력 (입력)  (0) 2020.08.16