728x90
반응형
코루틴 개념에 관한 글을 보면 다들 코루틴은 경량 스레드(light-weight threads)라고 소개하고 있다.
그런데 사실 코루틴을 처음 공부하는 사람이라면 이 문장은 잘 와닿지 않는다.
그냥 그렇구나.. 하고 넘어가긴 했지만 제대로 이해한 적은 없다.
개념적으로도 그렇지만 실제로 코루틴이 스레드보다 가벼운지도 궁금했다.
그래서 이번 글에서는 코루틴이 실제로 스레드보다 가볍다는 사실을 코드와 실행 결과로 기록해보려 한다.
코루틴 100만개 실행하기
fun main() = runBlocking<Unit> {
repeat(1_000_000) {
launch {
delay(5000)
println(".")
}
}
}
이 코드를 실행하면 정말 "."이 백만개 찍힌다.
그럼 이제 같은 코드를 스레드로 실행시켜보자.
스레드 100만개 실행하기
fun main() {
repeat(1_000_000) {
thread {
Thread.sleep(5000)
println(".")
}
}
}
이 코드를 실행하면 어떤 결과가 나올까?
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
.....
이러한 에러를 마주할 수 있다.
위 결과를 보면 스레드를 여러개 실행하는 것보다 코루틴을 여러개 실행하는 것이 훨씬 가볍다.
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
Coroutines의 내부 동작 (0) | 2024.03.07 |
---|---|
Coroutines을 다른 스레드에서 실행하기 (0) | 2024.03.03 |
Blocking vs Suspending 차이점 (0) | 2024.03.01 |
Suspend function 짧은 소개 (0) | 2024.01.19 |
Android에서 Kotlin을 사용할 때 이점(JetBrains피셜) (0) | 2022.08.18 |