스레드

Language/Kotlin

Coroutines을 다른 스레드에서 실행하기

이번 글은 저번 글 문맥이 살짝 섞여있는데, 간단히 말해 저번 글에서는 코루틴을 메인 스레드에서만 실행했다. 그래서 이번 글에서는 코루틴을 다른 스레드에서 실행해보려고 한다. 다른 스레드에서 코루틴 실행하기 바로 예제를 통해 알아보자. fun main() = runBlocking { println("main starts") joinAll( async { threadSwitchingCoroutine(1, 500) }, async { threadSwitchingCoroutine(2, 300) } ) println("main ends") } suspend fun threadSwitchingCoroutine(number: Int, delay: Long) { println("Coroutine $number sta..

Language/Kotlin

Blocking vs Suspending 차이점

이번에는 Thread에서 전통적으로 사용하는 sleep(blocking)과 Coroutines에서 사용하는 delay(suspending)의 차이에 대해 적어본다. Thread의 blocking 먼저 스레드로 blocking하는 예시를 보도록 하자. fun main() { println("main starts") threadRoutine(1, 500) threadRoutine(2, 300) Thread.sleep(1000) println("main ends") } fun threadRoutine(number: Int, delay: Long) { thread { println("thread $number starts work") Thread.sleep(delay) println("thread $number..

Language/Kotlin

Thread와 Coroutines 비교

코루틴 개념에 관한 글을 보면 다들 코루틴은 경량 스레드(light-weight threads)라고 소개하고 있다. 그런데 사실 코루틴을 처음 공부하는 사람이라면 이 문장은 잘 와닿지 않는다. 그냥 그렇구나.. 하고 넘어가긴 했지만 제대로 이해한 적은 없다. 개념적으로도 그렇지만 실제로 코루틴이 스레드보다 가벼운지도 궁금했다. 그래서 이번 글에서는 코루틴이 실제로 스레드보다 가볍다는 사실을 코드와 실행 결과로 기록해보려 한다. 코루틴 100만개 실행하기 fun main() = runBlocking { repeat(1_000_000) { launch { delay(5000) println(".") } } } 이 코드를 실행하면 정말 "."이 백만개 찍힌다. 그럼 이제 같은 코드를 스레드로 실행시켜보자. 스..

BonusTrack02.dev
'스레드' 태그의 글 목록