독서/코틀린 코루틴

[ 코틀린 코루틴 - 1장 ] 코루틴을 배워야 하는 이유

dongx._.2 2025. 4. 14. 00:43

 

코루틴을 배워야하는 이유

 

스레드를 사용했을 때의 문제점

- 스레드를 멈출 수 있는 방법이 없어 메모리 누수로 이어질 수 있음

- 스레드 생성시 비용이 많이 듦

- 스레드를 자주 전환하면 복잡도를 증가시키며, 관리가 어려움

- 코드가 쓸데없이 많이 길어짐

 

콜백을 사용했을 때의 문제점

- 병렬 처리가 힘듦

- 작업 순서를 다루기 힘들어짐

fun onCreate() {
    showProgressBar()
    showNews()         // Non-Blocking이므로 작업이 끝나기 전에 로딩이 종료
    hideProgressBar()
}

- 들여쓰기가 많아질수록 코드가 읽기 어려워짐

 

 

RxJava / 리액티브 스트림

장점

- 데이터 스트림 내에서 일어나는 모든 연산을 시작,처리,관찰 할 수 있음

- 스레드 전환 및 동시성 처리를 지원함

 

단점

- 구현이 복잡함

- 객체를 반환하는 함수는 Observable, Single로 래핑 해야함

- RxJava 도입을 위해 매우 많은 코드를 변경 해야함

- 동시성 처리를 위해 zip, flatMap 등 연산자를 많이 써야함

 

 

Coroutine

정의

- 중단했다가 다시 실행할 수 있는 컴포넌트 (component, 프로그래밍에서 재사용 가능한 각각의 독립된 모듈)

 

 

장점

- 코루틴은 중단 가능하며, 중단된 동안 스레드를 블로킹하지 않음 

   - (코루틴이 중단된 동안 스레드는 다른 작업을 할 수 있음)

- 매우 쉽게 병렬 처리 가능

- 코루틴을 시작한느 비용은 스레드와 비교가 되지 않을 정도로 저렴하며, 인지할 수 없을 정도