KOTLIN · 비동기
채널 (Channel)
채널은 코루틴 간 통신을 위한 동시성 기본 요소입니다. 생산자-소비자 패턴을 안전하게 구현합니다.
비동기고급channelproducer-consumercoroutinesconcurrency
핵심 설명
채널은 코루틴 간 통신을 위한 동시성 기본 요소입니다. 생산자-소비자 패턴을 안전하게 구현합니다.
Kotlin code
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
fun main() = runBlocking {
// 기본 채널
val channel = Channel<Int>(capacity = 5)
// 생산자
launch {
for (i in 1..5) {
println("전송: $i")
channel.send(i)
delay(100)
}
channel.close()
}
// 소비자
for (value in channel) {
println("수신: $value")
}
// produce 빌더
val numbers = produce {
var n = 1
while (true) {
send(n++)
delay(200)
}
}
// 5개만 수신
repeat(5) {
println("produce: ${numbers.receive()}")
}
numbers.cancel()
println("완료")
}학습 팁
Channel.CONFLATED는 최신 값만 유지하고, Channel.UNLIMITED는 무제한 버퍼링합니다. 용도에 맞는 버퍼 전략을 선택하세요.
주의할 점
채널을 close()하지 않으면 수신자의 for 루프가 영원히 대기합니다. 생산이 끝나면 반드시 닫으세요.
자주 묻는 질문
채널 (Channel)란 무엇인가요?
채널은 코루틴 간 통신을 위한 동시성 기본 요소입니다. 생산자-소비자 패턴을 안전하게 구현합니다.
채널 (Channel) 학습 시 주의할 점은 무엇인가요?
채널을 close() 하지 않으면 수신자의 for 루프가 영원히 대기합니다. 생산이 끝나면 반드시 닫으세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.