{
val l = buildList {
repeat(3) {
add("User$it")
println("L : Added User")
}
}
val l2 = l.map{
println("L : Processing")
"Processed $it"
}
val s = sequence {
repeat(3) {
yield("User$it")
println("S : Added User")
}
}
val s2 = s.map{
println("S : Procssing")
"Processed $it"
}
}
output
L : Added User
L : Added User
L : Added User
L : Processing
L : Processing
L : Processing
cold data는 즉각적으로 데이터를 소비하지않고 hot 보다 lazy한 특성을 가지고 있다는 것을 볼 수 있다.
val channel = produce {
while (true) {
val x = computeNextValue()
send(x)
}
}
val flow = flow {
while (true) {
val x = computeNextValue()
emit(x)
}
}
produce메소드는 즉각적으로 데이터를 channel로 전송할 것이다. 하지만 flow의 경우에는 consumer가 존재하는 경우에 data를 생성하기 시작할 것이다.
Hot data = eager
Cold data = lazy