일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- activity
- 코드포스
- livedata
- 코루틴
- pandas
- android
- Coroutine
- textfield
- androidStudio
- Kotlin
- Gradle
- relay
- Rxjava
- Python
- TEST
- Coroutines
- 백준
- 프로그래머스
- GitHub
- Compose
- Hilt
- ProGuard
- AWS
- MyVoca
- boj
- architecture
- 쿠링
- MiTweet
- 암호학
- Codeforces
- Today
- Total
목록분류 전체보기 (379)
이동식 저장소
목차 예외 전달 CoroutineExceptionHandler 코루틴의 취소와 예외 예외가 여러 개라면 Supervision Supervision job Supervision scope Supervisor job에서의 예외 처리 참고 문헌 코루틴이 취소되면 CancellationException이 발생한다. 이번 글에서는 코루틴이 취소되는 다양한 경우에 대해 알아본다. 예외 전달 코루틴 빌더는 launch와 actor처럼 예외를 자동으로 전달하는 종류와 async와 produce처럼 사용자에게 의존하는 종류로 나눌 수 있다. 루트 코루틴(어느 코루틴의 자식도 아닌 코루틴)을 만들 때, launch 등은 예외를 Thread.uncaughtExceptionHandler에서 즉시 처리한다. 예외가 발생하면 자..
목차 Channel Channel 종료 Producer-Consumer 패턴 파이프라인 분산처리 역(逆) 분산처리 Buffered Channels Channel은 평등하다 Ticker Channel Flow와 Channel의 차이 Deferred를 사용하여 코루틴 간에 하나의 값을 전달할 수 있다. 여러 개의 값을 전달할 때는 channel을 사용할 수 있다. Channel Channel은 개념상 BlockingQueue와 매우 비슷하다. 차이점이 있다면 BlockingQueue는 값을 전달하는 과정에서 스레드를 block하지만, Channel은 스레드를 block하지 않고 suspending 한다. val channel = Channel() launch { for (x in 1..5) channel.s..
suspending 함수를 이용하여 비동기적으로 값을 계산할 수 있다. 그런데 비동기적으로 계산되는 값이 여러 개라면 어떻게 할까? 예를 들어 1번부터 n번째까지의 피보나치 수를 1초에 하나씩 계산해서 반환하는 함수가 있다고 하자. 물론 모든 결과가 계산될 때까지 기다리는 방법도 있지만, 결과값이 반환될 때마다 하나씩 출력하는 것이 성능 측면에서 더 좋을 수 있다. 코틀린의 Flow를 이용하여 비동기적으로 계산된 값을 하나씩 받을 수 있다. 컬렉션 복습 collections을 이용하여 여러 개의 값을 표현할 수 있다. 다음의 코드에서 simple 함수는 세 개의 정수로 이루어진 List를 반환한다. fun simple(): List = listOf(1, 2, 3) fun main() { simple()...
목차 Dispatcher와 스레드 Unconfined vs. confined 코루틴과 스레드 디버깅 IntelliJ IDEA에서 디버깅 로그로 확인하기 코루틴에 이름 붙이기 문맥 조합하기 스레드 간 이동 Job 확인하기 부모-자식 관계 부(모)성애 정리: 코루틴 스코프 참고문헌 코루틴은 항상 CoroutineContext 문맥 안에서 실행된다. 코루틴 문맥에는 여러 원소가 포함되는데, 대표적인 것으로 Job과 dispatcher가 있다. Dispatcher와 스레드 코루틴 문맥에는 코루틴이 어느 스레드에서 동작할지를 결정하는 CoroutineDispatcher가 포함된다. dispatcher는 코루틴이 특정 스레드에서 실행되도록 할 수도 있고, 스레드 풀에서 실행되도록 할 수도 있고, 또는 어느 스레드에..
다양한 suspending 함수를 조합해 보자. 순차적으로 실행된다 다음의 두 suspending 함수가 있다. 두 함수는 어떤 유용한 계산을 수행한 후 결과를 반환한다. suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 유용한 척 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // 유용한 척.. return 29 } 두 함수를 순서대로 부르면 어떻게 될까? 순서대로 부른다는 것은 작업의 순서가 있다는 의미가 있다. 예를 들어 첫 번째 함수의 결과값에 따라 두 번째 함수를 부를 수도, 부르지 않을 수도 있지 않겠는가? val time = measureTimeMillis { val..