- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GIT
- 진짜학습지
- errorhandling
- blog
- n3문법
- github
- 인공지능
- rxjava
- 책리뷰
- 진짜일본어
- 책추천
- PR
- 진짜학습지후기
- posting
- Android
- Kotlin
- 안드로이드
- jlpt
- suspend
- ai
- 일본어문법
- 일본어기초
- coroutine
- CustomTab
- 학습지
- webflux
- androidstudio
- pullrequest
- KotlinInAction
- 코틀린
목록coroutine (5)
코딩하는 개굴이
해당 내용은 “코틀린 코루틴” 서적을 기반으로 작성되었습니다. Coroutine 의 중단은 어떻게 작동할까? 코루틴의 중심이 되는 기능이자 스레드 등과의 큰 차이점 중 하나가 잠시 멈추는, 중단에 있다는 것을 들어보았을 것이다. 마치 비디오 게임을 하다가 체크포인트나, 세이브를 하는 것처럼 중단 후 돌아올 수 있는 것이다. 이 부분에서 코루틴은 스레드와 크게 차이점을 가진다. 스레드는 저장이 불가하고 멈추는 것만 가능하나, 코루틴은 중단 시에 어떤 자원도 사용하지 않으면서 돌아올 때 다른 스레드에서 실행하는 것도, 중단되었을 때 반환하는 Continuation 객체의 직렬화/역직렬화까지 가능하기 때문이다. 그렇다면 도대체 어떤 점에서 다른지, 어떻게 중단과 재개는 동작하는지 한번 알아보도록 하자. 재개 ..
해당 포스팅은 Fastcampus 의 실무 프로젝트로 배우는 Kotlin & Spring: 리팩토링부터 서비스 구현까지 강의를 기반으로 작성되었습니다. Coroutine 의 기초 동작을 파악해볼 수 있도록 runBlocking, launch, async, suspend, flow 등을 사용해 코드를 작성해 보았다. 실행해보며, 감을 잡아보도록 하자 :) import kotlinx.coroutines.* import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.flow import kotlin.system.measureTimeMillis fun main() { // #####..
Dispatchers.Main 을 이용해 로직을 짜는데, 뭔가 이상하게 순서가 꼬였다 싶은 순간이 있을 수 있다. 보통의 개발자는 위에서부터 아래로 코드의 실행 순서를 가정하고 개발을 하곤하기에 Dispatchers.Main 의 정확한 이해는 중요하다. 따라서, 순서가 보장되게 이를 사용하려면 어찌 해야하는지 한번 알아보도록 하자. 그러기 위해서 Dispatcher이 무엇인지 코루틴의 동작은 어찌되는지 먼저 확인해보자. Dispatcher 란? 코루틴의 어떤 스레드에서 돌아갈지 정의하는 역할로써, Event Loop 를 통해 작동된다. Event Loop는 Call Stack 과 Callback Queue 의 상태를 반복적으로 체크하고, 함수를 실행할 시간이 되면 큐의 첫번째 아이템을 Call Stack..
Android 에서 비동기 실행을 할때 본인은 간혹 실수하여 에러를 마주하곤 한다. 바로 View 를 UI Thread 에서 변경하지 않아서 발생하는 것이 그것이다. 안드로이드 시스템은 애플리케이션이 실행되면 하나의 실행 스레드로 애플리케이션의 프로세스를 실행하는데, 이것을 메인 스레드라고 한다. UI 도구 키트 구성 요소를 생성 및 조작할 때 상호작용하는 스레드가 MainThread 이며, 그렇기 때문에 UI Thread 라고도 불린다. Main Thread 에서는 오래 소요되는 작업을 수행하지 않는 것을 권장하는데, 오래 소요되어 응답성/반응성이 떨어진다면 사용성이 떨어지거나 ANR 이 발생할 수 있기 때문이다. 따라서, 안드로이드 스레드 사용 시 아래와 같은 사항을 유념해야한다. 시간이 오래걸리는 ..
시작하기 전에, 해당 글에서는 본인이 헷갈리는 부분이 다소 많았기 때문에 부가 설명을 많이 추가했음을 먼저 알리고싶다. 코루틴은 무엇일까? 코루틴은 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드로, AsyncTask처럼 스레드의 직접 관리가 필요하지 않고, 기존의 다중 스레드보다 효율적으로 동작하는 장점이 있다. # 코루틴은 Thread를 중단하지 않는다? 스레드를 중단하지 않는다는 것이 어떤 의미일까? 우선, 코루틴1을 실행 중인 상태에서 코루틴2가 실행 될 때를 가정해보자. 이때, 실행 중인 Thread를 중지시키면서 Context Switching을 수행하는 것이 아닌 잠시 코루틴1을 멈춰두었다가 다시 실행할 때 이전 상태를 불러와 다시 스레드에서 이를 수행한다. 따라서, 코루틴은 T..