일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- hilt
- 코루틴 공식문서
- power menu 라이브러리
- 코루틴
- android orbit
- Hilt 에러
- BOJ
- RecyclerView Sticky Header
- 안드로이드 컴포즈
- 스레드 vs 코루틴
- Coroutine
- 코루틴 공식 문서
- Thread vs Coroutine
- runCatching
- power menu
- Android Compose Navigation
- AAC ViewModel
- 안드로이드 무한 스크롤
- Android Custom View
- 안드로이드 커스텀 뷰
- Android Compose
- Kotlin Serialization
- 백준 2615
- 코틀린 에러 핸들링
- viewmodel
- 백준
- Sticky Header RecyclerView
- 힐트
- android compose orbit
- Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
- Today
- Total
목록코루틴 (7)
Beeeam

동기 vs 비동기 동기: 어떤 작업을 진행할 때 한 요청에 대한 응답이 올 때까지 기다린 후 다음 요청을 처리하는 것 비동기: 어떤 작업을 진행할 때 한 요청에 대한 응답이 올 때까지 기다리지 않고 다른 요청들을 처리하는 것 동시성 vs 병렬성 둘 다 여러 개의 작업을 처리할 때 사용하는 기법이다. 하지만 처리하는 방법이 다르다. (당연한 얘기) 동시성 (Concurrency) 여러 작업을 동시에 처리하는 것 처럼 보이게 하는 방법이다. 이는 시분할 기법을 활용하여 여러 작업을 조금씩 나눠서 번갈아가며 실행하는 것이다. Context switching은 한 작업을 처리하다가 다른 작업을 처리하기 위해 변경하는 작업을 말한다. 병렬성 (Parallelism) 진짜 동시에 여러 작업을 처리하는 것이다. 이 ..

https://kotlinlang.org/docs/flow.html Asynchronous Flow | Kotlin kotlinlang.org Buffering 오래 걸리는 비동기 작업이 관련된 플로우의 경우 해당 플로우의 로직을 다른 코루틴에서 실행하는 것이 플로우 수집에 걸리는 전체 시간의 관점에서 도움이 된다. 예를 들어 방출하는데 100ms가 걸리고 플로우의 각 요소를 수집하는데 300ms씩 걸린다고 하자 fun simple(): Flow = flow { for (i in 1..3) { delay(100) emit(i) } } fun main() = runBlocking { val time = measureTimeMillis { simple().collect { value -> delay(300)..

https://kotlinlang.org/docs/flow.html Asynchronous Flow | Kotlin kotlinlang.org suspend 함수는 한 개의 값을 비동기적으로 실행하면서 반환한다. 그러면 여러 개의 값을 반환하려면 어떻게 해야 할까? 이 때 코루틴 플로우(Coroutine flow)를 사용하면 여러 개의 값을 반환할 수 있다. Representing multiple values 코틀린에서는 컬렉션을 사용하여 다수의 값을 나타낼 수 있다. 3개의 숫자를 요소로 갖는 리스트를 반환하는 함수를 main 함수에서 forEach 함수를 사용하여 이 리스트의 모든 값들을 출력할 수 있다. fun simple(): List = listOf(1, 2, 3) fun main() { sim..

https://kotlinlang.org/docs/coroutine-context-and-dispatchers.html#dispatchers-and-threads Coroutine context and dispatchers | Kotlin kotlinlang.org Coroutine Context는 다양한 요소로 이루어진 집합이다. 여기서 주요한 요소들은 coroutine job 객체와 dispatcher이다. (Coroutine Context 안에는 Coroutine job이랑 dispatcher 등 다양한 요소들이 들어있다.) Dispatchers and threads Coroutine Context는 dispatcher를 포함한다. Dispatcher는 해당 코루틴이 실행에 사용하는 스레드를 결정한..

https://kotlinlang.org/docs/composing-suspending-functions.html Composing suspending functions | Kotlin kotlinlang.org 이 섹션에서는 suspend 함수의 구성에 다양한 접근법들을 다룬다. Sequential by default 코루틴의 코드는 일반적인 코드와 마찬가지로 순차적 호출을 사용한다. fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Complet..

https://kotlinlang.org/docs/cancellation-and-timeouts.html Cancellation and timeouts | Kotlin kotlinlang.org 코루틴에서 실행되는 모든 중단 함수들은 취소 요청에 응답을 할 수 있어야 한다. 그러면 코드 실행중 취소 요청이 있는지를 반복적으로 확인해야 하는데 코루틴은 이러한 취소 요청에 대응할 수 있도록 구현이 되어 있다. 취소 요청에 대응하여 코루틴이 취소 되면 CancellationException을 발생 시키면서 종료를 한다. Cancelling coroutine execution (코루틴 실행 취소) 애플리케이션이 장시간 동안 실행되고 있으면 백그라운드의 코루틴들을 관리해야 할 필요가 생긴다. 예를 들어 사용자가 ..

안드로이드 면접 스터디를 진행하면서 코루틴에 대해서 공부하게 되었는데 이를 정리해보려고 한다. 참고로 코루틴 공식 문서를 참고하여 공부하였다. https://kotlinlang.org/docs/coroutines-basics.html Coroutines basics | Kotlin kotlinlang.org 코루틴? 코루틴은 비동기적으로 실행되는 코드를 간소화 하기 위해 사용되는 설계 패턴이다. 스레드와 개념적으로는 비슷하지만 코루틴은 특정 스레드에 포함되지 않는다. 그리고 코루틴은 스레드보다 더 가벼울 수 있다. fun main() = runBlocking { // this: CoroutineScope launch { // launch a new coroutine and continue delay(10..