개발/Kotlin
-
공식 가이드 문서로 Coroutine 공부하기 - [04. Coroutine Context and Dispatchers]개발/Kotlin 2020. 12. 2. 10:57
[ 04. 코루틴 컨텍스트 및 디스패처 ] 코루틴은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 타입의 값을 대표하는 일부 context 내에서 실행됩니다. Coroutine context는 다양한 요소의 집합입니다. 주요 요소는 이전에 보았던 코루틴의 Job, 이번 섹션에서 다루는 dispatcher입니다. # 디스패처와 스레드 Coroutine context에는 해당 코루틴이 실행을 위해 사용하는 스레드를 결정하는 coroutine dispatcher(CoroutineDispatcher 참조)를 참조합니다. coroutine dispatcher는 코루틴 실행을 특정 스레드에 제한하거나 스레드 풀로 디스패치하거나 제한없이 실행되도록 할 수 있습니다. launch 및 asyn..
-
공식 가이드 문서로 Coroutine 공부하기 - [03. Composing Suspending Functions]개발/Kotlin 2020. 11. 7. 04:23
[ 03. 일시중지 함수 구성 ] 일시중지 함수(suspending function)의 구성에 대한 다양한 접근방법을 다룹니다. # 기본적으로 순차적입니다 다른 곳에 정의 된 두 개의 Suspending function이 원격 서비스 호출 또는 계산과 같은 유용한 작업을 수행한다고 가정합니다. 이들은 유용한 척 할 뿐이지, 실제로 각각의 코드는 해당 예제를 위해 단지 1초간 지연될 뿐입니다. - code [전체코드 확인하기] : suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 여기에서 어떤 유용한 일을 하고 있는 것처럼 동작합니다 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) ..
-
공식 가이드 문서로 Coroutine 공부하기 - [02. Cancellation and Timeouts]개발/Kotlin 2020. 11. 6. 06:57
[ 02. 취소 및 시간 초과 ] 해당 섹션에서는 코루틴 취소 및 시간 초과에 대해 설명합니다. # 코루틴 실행 취소하기 장시간 구동되는 애플리케이션에서는 백그라운드 코루틴에 대한 세밀한 제어가 필요할 수 있습니다. 예를 들어, 사용자가 코루틴을 시작시킨 페이지를 닫았을 수 있으며 이제 그 결과를 필요로 하지 않고 해당 작업을 취소할 수 있습니다. launch함수는 실행 중인 코루틴을 취소시키는 데 사용할 수 있는 Job을 리턴시킵니다. - code [전체코드 확인하기] : val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 약간 delay println("main:..
-
공식 가이드 문서로 Coroutine 공부하기 - [01. Coroutine Basics]개발/Kotlin 2020. 11. 4. 06:28
[ 01. 코루틴 기본 사항 ] 코루틴 기본 개념을 다룹니다. # 첫번째 코루틴 - code [전체코드 확인하기] : import kotlinx.coroutines.* fun main() { GlobalScope.launch { // 새로운 코루틴을 백그라운드에서 실행 및 진행 delay(1000L) // 1초간 non-blocking 지연 (기본 시간 단위는 밀리세컨드) println("World!") // delay 후, 출력 } println("Hello,") // 코루틴이 지연(delay)되는 동안 메인스레드는 계속하여 진행 Thread.sleep(2000L) // JVM 유지를 위해 2초간 메인 스레드 차단(block) } - result : Hello, World! 기본적으로 코루틴은 경량(l..
-
공식 가이드 문서로 Coroutine 공부하기 - [00. Coroutine Guide]개발/Kotlin 2020. 11. 3. 06:17
[ 00. 코루틴 가이드 ] Kotlin은 언어로서의 표준 라이브러리에서 최소한의 low-level API만 제공하여 다양한 다른 라이브러리가 Coroutine을 활용할 수 있도록 합니다. 유사한 기능을 가진 다른 언어들과 달리, async 와 await 는 Kotlin의 키워드가 아니며 표준 라이브러리의 일부 역시 아닙니다. 또한, Kotlin의 suspending function 개념은 미래나 약속보다 비동기 작업에 대해 더 안전하고 오류 발생 가능성이 비교적 적은 추상화를 제공합니다. kotlinx.coroutines 는 JetBrains에서 개발된 Coroutine을 위한 풍요한 라이브러리 입니다. 여기에는 launch, async 및 기타를 포함한 여러 high-level 코루틴 지원 기본요소들..