Thread 안에서 실행되는 일시중단 가능한 작업의 단위

🐭 장점

  1. 경량 : 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다.
  2. 메모리 누수 감소
  3. 취소 지원
  4. Jetpack Libraray 적용

🐭 Dispatcher 종류

Main

IO : 네크워크, I/O 작업

Default : 정렬, Json Parsing, CPU를 많이 사용하는 작업

🐭 withContext

withContext()를 사용하면 콜백을 도입하지 않고도 코드 줄의 스레드 풀을 제어할 수 있으므로 데이터베이스에서 읽기, 네트워크 요청 실행과 같은 매우 작은 함수에 이를 적용할 수 있습니다.

비동기 작업을 순차적으로 처리 할 수 있다.

 suspend fun fetchDocs() {                      // Dispatchers.Main
    val result = get("developer.android.com")  // Dispatchers.Main
    show(result)                               // Dispatchers.Main
}

suspend fun et(url: String) =                 // Dispatchers.Main
    withContext(Dispatchers.IO) {              // Dispatchers.IO (main-safety block)
        /* perform network IO here */          // Dispatchers.IO (main-safety block)
    }                                          // Dispatchers.Main
}

🐭 launch / async