Thread.sleep()은 Thread 자체를 멈추는것

delay()는 delay를 호출한 coroutine body 자체를 멈추는것, 새로운 coroutine body는 멈추지 않음

launch는 새로운 코루틴을 만들어서 비동기로 동작하도록 처리

suspend fun 안에서 launch를 호출할 수 없음

launch는 Job객체를 반환해서 기다리거나 종료시킬 수 있음

취소가 불가능한 블럭을 만들기 위해서 withContext(NonCancellable)을 사용하면 된다.

withTimeout(timeInMillis: Long)을 통해서 시간초과했을때 취소하는 작업을 할 수 있고 취소가 되면 TimeoutCancellationException이 발생한다.

withTimeoutOrNull()을 통해서 예외처리가 아닌 null을 반환하도록 할 수 있다.

async()는 await()을 통해서 결과를 받아올 수 있다.

async(start = CoroutineStart.LAZY)를 하게 되면 생성 당시에는 block이 실행되지 않고 start()를 호출해야만 실행한다.

Untitled