본문 바로가기

Kotlin36

(Coroutine) 3. async 1. suspend 함수의 순차적 수행 아래 예시를 통해 suspend 함수를 순차적으로 수행해보자. suspend fun getRandom1(): Int { delay(1000L) return Random.nextInt(0, 500) } suspend fun getRandom2(): Int { delay(1000L) return Random.nextInt(0, 500) } fun main() = runBlocking { val elapsedTime = measureTimeMillis { val value1 = getRandom1() val value2 = getRandom2() println("$value1 + $value2 = ${value1+value2}") } println(elapsedTime).. 2022. 9. 14.
(Coroutine) 2. Light weight Thread, Job 1. Light weight Thread == Coroutine 코루틴 공식 가이드를 살펴보면 코루틴을 경량화된 쓰레드(Light-weight Thread) 라고 표현하고 있다. 경량화된 쓰레드가 무엇일까? 앞서 살펴본 예시들의 출력 결과를 봐보자. >> runBlocking: main @coroutine#1 >> Hello >> launch: main @coroutine#2 >> World! 출력 결과를 통해 알 수 있듯이 코루틴은 쓰레드 상에서 실행된다. 위 결과는 main 쓰레드에서 수행된 2개의 코루틴에 대한 결과이다. 즉, 코루틴은 쓰레드 없이 단독적으로 수행되거나 다른 수단에 의해 실행될 수 없다는 것을 뜻한다. 그렇기 때문에, 여러 코루틴이 한 쓰레드에서 수행될 수 있지만 코루틴이 동시에 수.. 2022. 9. 12.
(Coroutine) 1. Coroutine Basic 1. Simple Coroutine 코루틴을 만드는 함수는 코루틴 빌더라고 부른다. 코루틴을 만드는 가장 간단한 방법으로 runBlocking 함수가 있다. runBlocking 함수는 코루틴을 만들고, 블록 수행이 끝날 때 까지 다음 코드를 수행하지 못하게 막는 코루틴 빌더이다. runBlocking 함수는 반환 값을 지정해줄 수 있다. 이때, 기본 반환타입은 Unit이다. fun test() = runBlocking { // 반환 타입 : Int ... 3 // 최종 반환 값 } 2. 코루틴 빌더의 수신 객체 runBlocking 블록 안에서 this를 출력했을 때 결과를 살펴보자. fun main() = runBlocking { println(this) } >> "coroutine#1":Blocki.. 2022. 9. 12.
(Kotlin) sealed class 1. sealed class 보통 여러 자식 클래스들이 하나의 부모 클래스를 상속하게 되면 컴파일러는 상속하는 자식 클래스가 어떤 클래스인지 모른다. Kotlin의 sealed class는 부모 클래스를 상속하는 자식 클래스의 종류를 제한하는 특성을 갖는 클래스이다. 또한, sealed class는 같은 패키지에 존재하는 자식 클래스만 상속할 수 있다. 즉, sealed class를 사용하게 되면 동일 파일에 정의되어 있는 자식 클래스 외에 다른 어떤 클래스도 존재하지 않는다는 것을 명시적으로 컴파일러에 알려 컴파일 에러를 없에게 된다. UI의 상태를 관리하는 클래스를 만든다고 가정해보자. abstract class UiState class Loading : UiState class Running : U.. 2022. 7. 27.