[kotlin] Channel을 사용하여 데이터 전달하기

Channel은 Kotlin의 코루틴을 사용하여 데이터를 전달하고 통신하는 데 사용되는 특별한 유형의 코루틴 기반 컴퓨테이션과 유사한 것으로 볼 수 있습니다.

Channel이란 무엇인가?

Channel은 통신을 위한 구조물이며, 보낸 쪽과 받는 쪽이 동시에 또는 비동기적으로 데이터를 주고 받을 수 있게 해줍니다. 코루틴 사이에서 데이터를 안전하게 전달하고 동기화하는 데 사용됩니다.

Channel 생성하기

import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    val channel = Channel<Int>()
    val job = launch {
        for (x in 1..5) {
            channel.send(x * x)
        }
        channel.close()
    }
    repeat(5) {
        println(channel.receive())
    }
    job.join()
}

위 코드에서는 Channel을 사용하여 Int 타입의 데이터를 보내고 받는 예제가 있습니다. launch 코루틴 블록 내에서 channel.send()를 사용하여 데이터를 보내고, receive()를 사용하여 데이터를 받습니다.

Channel의 종류

Kotlin에는 다양한 종류의 Channel이 있습니다.

요약

Channel을 사용하면 코루틴 사이에서 안전하게 데이터를 주고 받을 수 있습니다. 이를 통해 동기화와 효율적인 통신이 가능하며, 코루틴 간의 효율적인 데이터 전달이 가능해집니다.

이러한 장점으로 Channel은 Kotlin에서 동시성 및 병렬 처리 작업을 다루는 데 유용한 도구로 활용됩니다.

참고 문헌: Kotlin Coroutines Guide - Channels