[Kotlin Coroutine] Coroutine 기본 2

2025. 3. 31. 11:30· Development/Android
목차
  1. Scope Builder
  2. Scope Builder와 동시성
  3. Job 명시적으로 사용하기
  4. Coroutines는 경량(light-weight)이다.
반응형

Scope Builder

- 다른 builder들에서 제공하는 Coroutine Scope 외에도, Coroutine Scope 빌더를 활용하여 고유한 scope을 선언할 수 있다.

 

- coroutineScope는 자식 Coroutine 들의 실행이 모두 완료될 때까지 종료되지 않는 Coroutine Scope을 생성한다.

 

- runBlocking의 경우에는 대기를 위해 현재 Thread를 Block 시키는 반면, coroutineScope는 다른 작업이 수행될 수 있도록 작업 중이던 스레드의 자원 사용을 해제한다는 차이가 있다.

fun main() = runBlocking {
    doWorld()
}

suspend fun doWorld() = coroutineScope {  // this: CoroutineScope
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello")
}

Scope Builder와 동시성

- coroutineScope builder은 일시 중단 함수 내부에서 복수의 동시 작업을 수행하기 위해 사용될 수 있다. 

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")
}

 

- 동시 실행이기 때문에 1초 후 World 1이 출력되고 그다음 1초 후에 World 2가 출력된다.

Hello
World 1
World 2
Done

Job 명시적으로 사용하기

- launch Coroutine builder는 실행된 Coroutine을 처리하고 완료를 명시적으로 기다리도록 하는 데 사용할 수 있는 Job 객체를 반환한다.

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

Coroutines는 경량(light-weight)이다.

- Coroutines는 JVM의 Thread들보다 덜 리소스 집약적이다. Thread를 사용할 때 JVM의 가용 메모리를 소진시키는 코드는 Coroutine을 사용하여 리소스의 제한치에 도달하지 않도록 표현될 수 있다.

 

- 단순히 스레드를 생성하여 사용하는 것보다 훨씬 많은 메모리 사용량을 절약할 수 있다.

반응형
저작자표시 (새창열림)
  1. Scope Builder
  2. Scope Builder와 동시성
  3. Job 명시적으로 사용하기
  4. Coroutines는 경량(light-weight)이다.
'Development/Android' 카테고리의 다른 글
  • [Kotlin Coroutine] 일시중단 함수 구성
  • [Kotlin Coroutine] Coroutine 취소와 타임아웃
  • [Kotlin Coroutine] Coroutine 기본 정리
  • [Android] 둥근 테두리 ImageView 사용 : ShapeableImageView
SeungYong.Lee
SeungYong.Lee
반응형
SeungYong.Lee
Win-Dev
SeungYong.Lee
전체
오늘
어제
  • All (232) N
    • Development (132) N
      • Android (128) N
      • iOS (0)
      • Flutter (4)
      • Backend (0)
    • Algorithm (5)
    • Knowledge (5)
      • IT (2)
      • Science (0)
      • ETC & Tip (3)
    • Today I Learn (28)
    • Coding Test (62)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 안녕하세요. 반갑습니다 :)

인기 글

태그

  • 비동기처리
  • HTTP
  • exception
  • coroutine
  • 코틀린
  • compose
  • Animation
  • 코딩테스트
  • Collection
  • Java
  • Retrofit
  • Kotlin
  • glance
  • Android
  • hilt
  • Flutter
  • Imageview
  • dfs
  • Widget
  • 프로그래머스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeungYong.Lee
[Kotlin Coroutine] Coroutine 기본 2
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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