Kotlin Coroutines

예외 처리예외 처리는 코루틴의 작동 원리 중 중요한 기능이다. 잡히지 않은 예외가 발생하면 프로그램이 종료되는 것처럼 코루틴도 잡히지 않는 예외가 발생했을 때 종료된다. 예외는 자식에서 부모로 전파되며, 부모가 최소 되면 자식도 취소되기 때문에 쌍방으로 전파된다. 예외 전파가 정지되지 않으면 계통 구조상 모든 코루틴이 취소되게 된다. 코루틴 종료 멈추기코루틴이 종료되기 전에 예외를 잡는 건 도움이 되지만.. 조금이라도 늦으면 이미 늦어버린 것이다..코루틴 간의 상호작용은 Job을 통해서 일어나기 때문에, 코루틴 빌더 내부에서 새로운 코루틴 빌더를 try-catch 문을 통해 래핑하는 건 전혀 도움이 되지 않는다. 그러니 예외 처리를 잘 이해해 보자 SupervisorJob코루틴 종료를 멈추는 가장 중요한..
기본적인 취소Job 인터페이스는 취소하게 하는 `cancel` 메서드를 가지고 있다. `cancel`메서드를 호출하면 다음과 같은 효과를 가져올 수 있다.- 호출한 코루틴은 첫 번째 중단점에서 Job을 끝낸다.- Job이 자식을 가지고 있다면, 그들 또한 취소된다. 하지만 부모는 영향을 받지 않는다.- Job이 취소되면, 취소된 잡은 새로운 코루틴의 부모로 사용될 수 없다. 취소된 잡은 `Cancelling`상태가 되었다가 `Cancelled` 상태로 바뀐다. `cancel`이 호출된 뒤 다음 작업을 진행하기 전에 취소 과정이 완료되는 것을 기다리기 위해 join을 사용하는 것이 일반적이다. `join`을 호출하지 않으면 경쟁 상태(race condiction)가 될 수도 있다. suspend fun m..
구조화된 동시성코루틴 스코프는 구조화된 동시성을 가진다고 했다.- 자식은 부모로부터 컨텍스트를 상속받는다.- 부모는 모든 자식이 작업을 마칠 때까지 기다린다.- 부모 코루틴이 취소되면 자식 코루틴도 취소된다.- 자식 코루틴에서 에러가 발생하면, 부모 코루틴 또한 에러로 소멸한다. 자식이 부모로부터 컨텍스트를 물려받는 건 코루틴 빌더의 가장 기본적인 특징이다.이 구조화된 동시성의 특징 중 세 가지는 Job 컨텍스트와 관련이 있다. Job은 코루틴을 취소하고, 상태를 파악하는 등 다양하게 사용될 수 있다. Job?Job은 수명을 가지고 있으며 취소가 가능하다. Job은 인터페이스이지만 구체적인 사용법과 상태를 가지고 있다는 점에서 추상 클래스처럼 다룰 수도 있다.Job의 수명은 상태로 나타낸다.  `Acti..
코루틴 빌더가 뭔데중단 함수는 일반 함수를 호출 가능하지만, 일반 함수는 중단 함수를 호출할 수 없다.모든 중단 함수는 또 다른 중단 함수에 의해 호출되어야 하는데 결국 그 앞엔 시작점이 있을 것이다. 코루틴 빌더가 그 역할을 한다.즉, 코루틴을 생성하는 메서드인 것이다. 코루틴 빌더의 종류- launch- runBlocking- async 각각 다른 쓰임새가 있다 천천히 알아보자. launchlaunch의 작동 방식은 thread 함수를 호출하여 새로운 스레드를 시작하는 것과 비슷하다. 불꽃놀이를 할 때 각각의 불꽃이 하늘 위로 각자 퍼지는 것처럼 별개로 실행된다.다음 예제에서는 '슛'이 실행되고 1초 후 '펑'들이 실행되는 것을 볼 수 있다. 여기서 `Thread.sleep` 을 하는 이유는, 메인 ..
easyhz
'Kotlin Coroutines' 카테고리의 글 목록 (2 Page)