[kotlin] 동시성과 병렬성 개념 이해하기
목차
동시성 vs. 병렬성
동시성(Concurrency)은 여러 작업을 동시에 다루는 것을 의미하며, 이는 메인 작업과 연관된 작은 작업들이 번갈아 가며 실행되는 것을 말합니다. 이는 한 번에 여러 작업을 처리할 수 있는 것처럼 보일 수 있지만, 실제로는 동시에 실행되는 것은 아닙니다.
병렬성(Parallelism)은 여러 작업을 동시에 처리하는 것을 의미하며, 실제로 병렬로 실행됨을 의미합니다.
Kotlin에서의 동시성 지원
Kotlin은 coroutine
을 통해 동시성을 지원합니다. coroutine
은 비동기적으로 실행되며, 일시 중단 및 재개될 수 있는 가벼운 스레드를 나타냅니다. suspend
키워드를 사용하여 함수가 일시 중단될 수 있음을 나타내고, launch
, async
, await
등의 키워드를 통해 쉽게 동시성 작업을 다룰 수 있습니다.
import kotlinx.coroutines.*
fun main() = runBlocking {
val job = launch {
delay(1000)
println("World!")
}
println("Hello,")
job.join()
}
Kotlin에서의 병렬성 지원
Kotlin은 coroutine
을 활용하여 병렬성을 구현할 수 있습니다. async
및 await
를 사용하여 다수의 작업을 동시에 시작하고, 결과를 모아 최종 결과로 처리할 수 있습니다.
import kotlinx.coroutines.*
suspend fun doWork1(): Int {
delay(1000) // 가상의 작업 수행
return 13
}
suspend fun doWork2(): Int {
delay(1500) // 가상의 작업 수행
return 29
}
fun main() = runBlocking {
val result1 = async { doWork1() }
val result2 = async { doWork2() }
println("Result: ${result1.await() + result2.await()}")
}
정리
Kotlin은 coroutine
을 통해 동시성과 병렬성을 지원하여 복잡한 비동기 작업을 쉽게 다룰 수 있습니다. 이를 통해 성능 향상과 간편한 비동기 프로그래밍을 지원합니다.
참고 문헌: