KOTLIN · 비동기
Flow — Cold Stream 기초
Kotlin Flow는 비동기 데이터 스트림을 위한 Cold Stream입니다. flow { } 빌더로 값을 순차적으로 방출하며, collect가 호출될 때만 실행됩니다. RxJava보다 간결한 코루틴 기반 리액티브 프로그래밍을 제공합니다.
핵심 설명
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할 때마다 처음부터 다시 실행됩니다. 여러 구독자가 공유해야 하면 SharedFlow나 StateFlow를 사용하세요.
주의할 점
flow { } 빌더 안에서 다른 CoroutineContext로 emit하면 예외가 발생합니다. context를 바꾸려면 flowOn()을 사용하세요.
자주 묻는 질문
Flow — Cold Stream 기초란 무엇인가요?
Kotlin Flow는 비동기 데이터 스트림을 위한 Cold Stream입니다. flow { } 빌더로 값을 순차적으로 방출하며, collect 가 호출될 때만 실행됩니다. RxJava보다 간결한 코루틴 기반 리액티브 프로그래밍을 제공합니다.
Flow — Cold Stream 기초 학습 시 주의할 점은 무엇인가요?
flow { } 빌더 안에서 다른 CoroutineContext 로 emit 하면 예외가 발생합니다. context를 바꾸려면 flowOn() 을 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.