일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- relay
- 백준
- activity
- 코드포스
- TEST
- 암호학
- android
- androidStudio
- Coroutines
- MyVoca
- MiTweet
- Codeforces
- boj
- architecture
- Python
- 프로그래머스
- ProGuard
- textfield
- pandas
- 코루틴
- Coroutine
- Kotlin
- GitHub
- livedata
- Rxjava
- AWS
- Gradle
- 쿠링
- Hilt
- Compose
- Today
- Total
목록Primary/Kotlin (39)
이동식 저장소
목차 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..
코루틴 취소하기 코루틴을 취소해야 할 경우가 있다. 예를 들어 어떤 페이지가 열려 있을 때 작동하는 코루틴이 있는데, 사용자가 그 창을 닫았다고 해 보자. 창이 닫혔으므로 코루틴은 더 이상 작동할 필요가 없으며 (따라서) 중지하는 것이 바람직하다. launch 메소드가 반환하는 Job 객체를 이용하여 코루틴을 제어할 수 있다. val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) println("main: I'm tired of waiting!") job.cancel() // job 취소 job.join() // job이 완전히 취소될 때까지 기다림 println("main..
코루틴 코루틴이란 비동기적으로 실행되는 코드를 간단하게 작성하기 위해 사용할 수 있는 설계 패턴이다. 코루틴은 실행 중인 스레드를 중단시키지 않는 suspend를 지원하기 때문에 하나의 스레드에서 여러 개의 코루틴을 실행할 수 있다. 코루틴은 스택조차 없기 때문에 스레드보다도 메모리를 더 절약할 수 있다. 코루틴은 작업 범위를 설정하여 그 안에서 비동기 작업을 구조화한다. 글을 읽다 보면 무슨 말인지 알게 될 것이다. 코루틴은 부모-자식 간의 관계를 설정하여 자식의 취소(코드 중단)를 부모에게 전달할 수 있다. (안드로이드 한정) 많은 Jetpack 라이브러리에서 코루틴을 완벽히 지원하고 있다. 시작하기 전에 사실 코루틴은 코틀린의 기본 패키지에 포함되어 있지 않다. 플러그인을 로드해야 코루틴을 제대로 ..
Sequence Sequence는 독특한 형태의 container이다. 기본적인 형태는 List 등의 Iterable과 같지만, 세부적인 동작 방법이 다르다. Iterable에 map(), filter(), take()을 적용한다고 해 보자. 우선 원본의 모든 원소에 map()이 적용되고, 그 결과에 filter()가 적용되고, 마지막으로 take()가 적용된다. 즉 코드에서 함수를 적용한 순서대로 중간 결과가 반환된다. Sequence에 같은 함수를 적용한다고 해 보자. Sequence는 Iterable과는 다르게 각 원소마다 모든 함수를 적용한다. 각 원소마다 map(), filter(), take()을 모두 적용해 본다는 뜻이다. 만약 원소가 filter()의 조건에 맞지 않는다면 filter()까..