-
Notifications
You must be signed in to change notification settings - Fork 0
Coroutine
박진성 edited this page Dec 14, 2023
·
1 revision
- Coroutine 은 가벼운 스레드 이다
- Scope 안에서는 suspend func 만 사용 가능하다
-
**비선점형 멀티태스킹**
이 가능하다- 중단 지점을 만나지 않는 한, 제어권 양도하지 않고 이어서 계속 실행
-
**병행성**
은 제공하지만,**병렬성**
은 제공하지 않는다!
공통점
- 비동기 작업을 하기 위해 사용
차이점
- 스레드 : 여러개의 작업을 병렬로 수행하며 비동기처리한다
- 일꾼 두명 각자 작업
- 코루틴 : 여러개의 작업을 쪼개서 나눠 동시에 작업 수행하는 방식
- 일꾼 한명이 번갈아 작업
- 성능면에서 더 좋음!!
- 양쪽다 비동기 처리를 위해 굉장히 많이 사용하는 기술 진영이다
- Coroutine은 RxJava / RxKotlin 보다 상대적으로 러닝커브가 낮고, 동기코드 작성시와 동일한 가독성과 간결함을 유지할 수 있다
→ 예시) RxJava
Flowable.range(0, 10)
.observeOn(Schedulers.io())
.subscribeOn(Schedulers.io())
.map {
it + 1
}
.filter {
it > 4
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
println(it)
},
{
it.printStackTrace()
}
)
→ 예시) Coroutine
CoroutineScope(Dispatchers.Default).launch {
(0..9).map { it + 1 }
.filter { it > 4 }.forEach {
launch(Dispatchers.Main) {
println(it)
}
}
}
- ViewModel 에서 네트워크 통신을 위한 ViewModelScope 사용
- Fragment 및 Activity 에서, Flow Collect를 위한 repeatOnLifecycle 사용
-
👬 팀 회고
-
🙍♂️ 개인 회고