누룽지맛치킨
어미새의 개발일지
누룽지맛치킨
전체 방문자
오늘
어제
  • 분류 전체보기 (86)
    • 코틀린 (8)
    • 안드로이드 (5)
      • 디자인 (2)
      • 개발 (2)
      • 도구 (1)
    • 피그마 (1)
    • 대외활동 (0)
    • 프로젝트 (0)
    • 백준 (55)
      • JAVA (55)
    • 알고리즘 (3)
    • 클라우드 (5)
    • 스터디 (2)
      • 코테 (2)
    • 자료구조 (5)
    • 컴퓨터 기술 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 자바
  • 클라우드 컴퓨팅
  • 안드로이드
  • Room Migration
  • 자료구조
  • 백준 자바 수열
  • 백준 자바 정렬
  • 안드로이드 디자인
  • 알고리즘 조합
  • 코틀린 인 액션
  • 코틀린
  • 자바 Priority Queue
  • 백준 자바 2559번
  • Room version 올리기
  • 백준 자바 2292번
  • 백준 자바 누적합
  • 코틀린 runBlocking
  • 클라우드
  • 백준 자바 벌집
  • 백준 자바 다이나믹 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
누룽지맛치킨
코틀린

[코루틴] runBlocking

코틀린

[코루틴] runBlocking

2023. 7. 5. 18:37

runBlocking은 코루틴을 만들고 코드 블록이 수행이 끝날 때까지 runBlocking 다음의 코드를 수행하지 못하게 막는다.

이 때 코루틴을 만드는 함수를 coroutine builder라고 한다.

 

fun runBlockingFunc(){
    runBlocking {
        println(coroutineContext)// 코루틴 스코프는 코루틴을 제대로 처리하기 위한 정보, coroutineContext를 가지고 있다. coroutineContext는 여러가지 정보를 가지고 있음.
        println(this) //runBlocking 안에서 this를 수행하면 코루틴이 수신 객체인 것을 알 수 있다. 즉 코드 블런 안에서 모든 코루틴 기능 사용 가능
        println(Thread.currentThread().name)
        delay(500L)
        println("Hello")
    }
    println("World")
}




result

[BlockingCoroutine{Active}@5679c6c6, BlockingEventLoop@27ddd392]
BlockingCoroutine{Active}@5679c6c6
main
Hello
World

위의 코드는 runBlocking을 이용하여 만든 함수이다. 위에서 볼 수 있는 runBlocking의 특징을 알아보자.

 

1. runBlocking 안에서 this를 수행하면 코루틴이 수신 객체인 것을 알 수 있다. 즉, 코드 블록 안에서 모든 코루틴 기능을 사용 가능하다.

2. 코루틴 스코프는 코루틴을 제대로 처리하기 위한 정보, coroutineContext를 가지고 있다. coroutineContext는 여러가지 정보를 가지고 있다.

3. "World"를 출력하는 코드는 runBlocking이 실행되는 시간에 상관없이 runBlocking 블록이 끝날 때까지 기다리고 실행된다.

 

runBlocking을 사용할 때는 반환 값의 타입을 지정해야 한다. 하지만, 평소에는 컴파일러가 반환 타입을 유추하여 지정해주기 때문에 괜찮지만, 명시적으로 사용해야할 때는 명시적으로 타입을 지정해줘야한다.

 

fun main() {
    println(runBlockingReturnFunc())
    println(runBlockingReturnFunc2())
}

fun runBlockingReturnFunc() = runBlocking<Int>{
    5 + 9
}

fun runBlockingReturnFunc2() = runBlocking<Unit>{
    5 + 9
}


result

14
kotlin.Unit

 

'코틀린' 카테고리의 다른 글

예외 처리  (0) 2023.01.26
Iteration  (0) 2023.01.26
선택 표현과 처리  (0) 2023.01.25
클래스와 프로퍼티  (0) 2023.01.25
함수와 변수  (0) 2023.01.25
    '코틀린' 카테고리의 다른 글
    • 예외 처리
    • Iteration
    • 선택 표현과 처리
    • 클래스와 프로퍼티
    누룽지맛치킨
    누룽지맛치킨

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.