전체 글

공부, 일상
Language/Kotlin

Coroutines의 내부 동작

지금까지 코루틴을 공부하면서 보면 이 녀석은 특정 시점에 내 맘대로 멈추고 다시 실행시키는데 이런 동작은 참 신기하다. 그래서 이번 글에서는 코틀린 컴파일러가 내부적으로 어떻게 동작하는지 살펴보겠다. 코틀린 컴파일 과정 사실 이렇게 제목을 달아야할까 싶을 정도로 간단히 적을 내용이다. 자바를 알고 있는 개발자라면 자바가 어떻게 컴파일되는지 알고 있을텐데 코틀린도 유사하다. .kt 확장자를 가진 파일을 코틀린 컴파일러가 .class 확장자인 바이트코드로 변환한다. 이게 끝이다. 바이트코드를 Decompile하면? 대체 뭐가 나올까? .java 파일로 decompile된 코드가 보인다. Android Studio에서 해당 과정을 진행할 수 있는데 Tools - Kotlin - Show Kotlin Bytec..

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..

BonusTrack02.dev
BonusTrack02.dev