PHpullh
학습 라이브러리/Kotlin/Flow — Cold Stream 기초

KOTLIN · 비동기

Flow — Cold Stream 기초

Kotlin Flow는 비동기 데이터 스트림을 위한 Cold Stream입니다. flow { } 빌더로 값을 순차적으로 방출하며, collect가 호출될 때만 실행됩니다. RxJava보다 간결한 코루틴 기반 리액티브 프로그래밍을 제공합니다.

비동기중급flowcold-streamcoroutinesreactive

핵심 설명

Kotlin Flow는 비동기 데이터 스트림을 위한 Cold Stream입니다. flow { } 빌더로 값을 순차적으로 방출하며, collect가 호출될 때만 실행됩니다. RxJava보다 간결한 코루틴 기반 리액티브 프로그래밍을 제공합니다.

Kotlin code

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*

// Cold Stream: collect 호출 시에만 실행
fun numberFlow(): Flow<Int> = flow {
    for (i in 1..5) {
        delay(100) // 비동기 작업 시뮬레이션
        emit(i)    // 값 방출
    }
}

fun main() = runBlocking {
    // 기본 collect
    numberFlow().collect { value ->
        println("수신: $value")
    }

    // 중간 연산자 체이닝
    numberFlow()
        .filter { it % 2 == 0 }
        .map { it * it }
        .collect { println("변환 결과: $it") }

    // flowOf, asFlow 변환
    flowOf("A", "B", "C").collect { print("$it ") }
    println()
    (1..3).asFlow().collect { print("$it ") }
}

학습 팁

Flow는 Cold Stream이므로 collect할 때마다 처음부터 다시 실행됩니다. 여러 구독자가 공유해야 하면 SharedFlowStateFlow를 사용하세요.

주의할 점

flow { } 빌더 안에서 다른 CoroutineContextemit하면 예외가 발생합니다. context를 바꾸려면 flowOn()을 사용하세요.

자주 묻는 질문

Flow — Cold Stream 기초란 무엇인가요?

Kotlin Flow는 비동기 데이터 스트림을 위한 Cold Stream입니다. flow { } 빌더로 값을 순차적으로 방출하며, collect 가 호출될 때만 실행됩니다. RxJava보다 간결한 코루틴 기반 리액티브 프로그래밍을 제공합니다.

Flow — Cold Stream 기초 학습 시 주의할 점은 무엇인가요?

flow { } 빌더 안에서 다른 CoroutineContext 로 emit 하면 예외가 발생합니다. context를 바꾸려면 flowOn() 을 사용하세요.