[Kotlin] Coroutine - 코루틴의 내부 구현

코루틴은 디컴파일되면 일반 코드일 뿐이다. Continuation Passing Style(CPS, 연속 전달 방식) 이라는 형태로 동작하며, 결과를 호출자에게 직접 반환하는 대신 Continuation으로 결과를 전달한다. Continuation이라는 객체가 있고, 매 번 함수를 호출할 때마다 continuation을 넘겨준다. continuation은 Callback 인터페이스 같은 것으로, 재개를 해주는 인터페이스를 가진 객체인 것이다.
자세히 보기

[Kotlin] Coroutine - Cancellation and Timeouts

코루틴이 취소되기 위해서 협조적인 방식을 취하는데 크게 2가지 방법이 있다. 첫 번째, 주기적으로 suspend function을 호출하기 (suspend 되었다가 다시 재개될 때 cancel 되었는지를 확인해서 Exception을 던져주는 방식). 두 번째, 명시적으로 취소 상태를 확인하기 (isActive 상태를 확인하여 false일 때 해당 코루틴을 종료시키는 방식)
자세히 보기

[Kotlin] Coroutine - Basics

코루틴 Coroutine은 비동기 콜백 처리를 순차적인 코드로 작성할 수 있게 해주는 코틀린 기능이자, 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴(concurrency design pattern)이다.
자세히 보기

[Kotlin] Data Class

어떤 클래스가 데이터를 저장하는 역할만을 수행한다면 toString, equals, hashCode를 반드시 오버라이드해야 한다. IntelliJ 같은 IDE는 이러한 메소드들을 자동으로 정의해주고, 작성된 메소드의 정확성과 일관성을 검사해준다. 하지만 코틀린은 더 편리하다! 이제는 이런 메소드를 IDE를 통해 생성할 필요도 없이 data라는 변경자를 클래스 앞에 붙이면 필요한 메소드를 컴파일러가 자동으로 만들어준다. data 변경자가 붙은 클래스를 데이터 클래스라고 부른다.
자세히 보기