넌 블로킹

스레드는 무겁고 생성하는 데 비용이 많이 들며 제한된 수의 스레드만 생성할 수 있다.

스레드가 블로킹된다면 자원이 낭비되는 셈이어서 코틀린은 중단 가능한 연산이라는 기능을

제공한다. 스레드의 실행을 블로킹하지 않으면서 실행을 잠시 중단하는 것이다.

ex ) 스레드1에서 작업이 끝나기를 기다리려면 스레드2를 블로킹하는 대신, 대기해야하는 코드를

   일시 중단시키고, 그동안 스레드2를 다른 연산 작업에 사용.

명시적인 선언

동시성은 깊은 고민과 설계가 필요해, 연상이 동시에 실행돼야 하는 시점을 명시적으로

만드는 것이 중요하다. 일시 중단 가능한 연산은 기본적으로 순차적으로 실행된다.

연산은 일시 중단될 때 스레드를 블로킹하지 않기 때문에 직접적인 단점은 아니다.

→ suspend fun, delay()

suspend 함수는 백그라운드 스레드에서 작업을 처리하기 전에 완료를 기다린다.

가독성

코틀린의 동시성 코드는 순차적인 코드만큼 읽기 쉽다.

코틀린 동시성 관련 개념과 용어

일시 중단 연산

해당 스레드를 차단하지 않고 실행을 일시 중지할 수 있는 연산. 자체 실행을 일시 중단하면