Ответ
Каналы (Channels) в Kotlin — это механизм для передачи данных между корутинами. Они похожи на блокирующие очереди, но работают асинхронно.
Основные особенности:
Channel<T>— интерфейс, поддерживающий отправку (send) и получение (receive) данных.- По умолчанию канал буферизированный (размер буфера можно задать).
- Может быть закрыт (
close) для сигнализации завершения отправки.
Пример:
val channel = Channel<Int>()
launch {
repeat(5) {
channel.send(it)
}
channel.close()
}
launch {
for (value in channel) {
println(value) // 0, 1, 2, 3, 4
}
}
Типы каналов:
Rendezvous(по умолчанию) — без буфера.Buffered— с фиксированным размером буфера.Conflated— хранит только последнее значение.Unlimited— неограниченный буфер.
Используются для организации потоков данных между корутинами.