독서/코틀린 코루틴
[ 코틀린 코루틴 - 1장 ] 코루틴을 배워야 하는 이유
dongx._.2
2025. 4. 14. 00:43
코루틴을 배워야하는 이유
스레드를 사용했을 때의 문제점
- 스레드를 멈출 수 있는 방법이 없어 메모리 누수로 이어질 수 있음
- 스레드 생성시 비용이 많이 듦
- 스레드를 자주 전환하면 복잡도를 증가시키며, 관리가 어려움
- 코드가 쓸데없이 많이 길어짐
콜백을 사용했을 때의 문제점
- 병렬 처리가 힘듦
- 작업 순서를 다루기 힘들어짐
fun onCreate() {
showProgressBar()
showNews() // Non-Blocking이므로 작업이 끝나기 전에 로딩이 종료
hideProgressBar()
}
- 들여쓰기가 많아질수록 코드가 읽기 어려워짐
RxJava / 리액티브 스트림
장점
- 데이터 스트림 내에서 일어나는 모든 연산을 시작,처리,관찰 할 수 있음
- 스레드 전환 및 동시성 처리를 지원함
단점
- 구현이 복잡함
- 객체를 반환하는 함수는 Observable, Single로 래핑 해야함
- RxJava 도입을 위해 매우 많은 코드를 변경 해야함
- 동시성 처리를 위해 zip, flatMap 등 연산자를 많이 써야함
Coroutine
정의
- 중단했다가 다시 실행할 수 있는 컴포넌트 (component, 프로그래밍에서 재사용 가능한 각각의 독립된 모듈)
장점
- 코루틴은 중단 가능하며, 중단된 동안 스레드를 블로킹하지 않음
- (코루틴이 중단된 동안 스레드는 다른 작업을 할 수 있음)
- 매우 쉽게 병렬 처리 가능
- 코루틴을 시작한느 비용은 스레드와 비교가 되지 않을 정도로 저렴하며, 인지할 수 없을 정도