`Sequence` is synchronous and lazy on the current thread. `Flow` is a cold asynchronous stream that can suspend, is cancellable, and is collected with coroutines (`collect`), which makes it good for async data streams.
flow {
emit(1)
emit(2)
}.collect { value ->
println(value)
}`Sequence` is pull-based and synchronous: operations run when you iterate, on the current thread.
`Flow` is also cold (doesn’t run until collected), but it’s suspendable/cancellable and integrates with coroutines. It can represent async sources (DB, network, UI events) and supports operators with proper cancellation.