투케이2K

102. (kotlin/코틀린) 코루틴 (coroutine) 개념 간략 정리 실시 본문

Kotlin

102. (kotlin/코틀린) 코루틴 (coroutine) 개념 간략 정리 실시

투케이2K 2022. 10. 9. 11:55

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[개념 설명]

[1]. 코루틴 (coroutine) 이란?

- 코루틴은 동시성 프로그래밍으로 비동기적으로 실행되는 코드입니다
- 코루틴은 백그라운드 스레드 (네트워크 통신) 에서 코드를 처리할 때 자주 사용됩니다
- 코루틴은 하나의 스레드에서 여러개 동시에 실행될 수 있습니다





[2]. 코틀린 스코프 (Coroutine Scope) 란?

- 코틀린 스코프는 새로운 코루틴을 생성함과 동시에 실행되어야 할 Job 을 그룹핑 합니다
- Main : 메인 쓰레드에 대한 Context 이며, UI 갱신이나 View 작업에 사용합니다
- IO : 네트워킹이나 내부 DB 접근 등 백그라운드에서 필요한 작업을 수행할 때 사용합니다
- Default : 크기가 큰 배열 , 리스트를 다룰때나 필터링을 수행하는 등 복잡한 연산이 필요한 작업에 사용됩니다





[3]. suspend 란?

- suspend 는 비동기 환경(Asynchronous)에서 사용할 수 있습니다
- suspend 는 코루틴 내에서만 호출할 수 있습니다
- suspend 를 사용하기 위해서는 함수 앞에 suspend 키워드를 붙여야합니다 (ex : suspend fun testMain)
- suspend 사용 시 프로그램 동기화 (순차적) 로직을 구현할 수 있습니다





[4]. delay 란?

- delay 는 코루틴이나 다른 suspend 함수 안에서만 수행될 수 있습니다
- delay 는 작업 진행에서 일정 시간 딜레이를 줄 수 있습니다





[5]. withContext 란?

- withContext 는 코틀린 스코프 (Coroutine Scope) 내에서 또다른 코루틴을 명시해 줄때 사용합니다 (ex : withContext(Main))
- withContext 는 IO 네트워크 통신 후 응답 받은 결과로 UI 화면 변경을 수행 할 때 Main 을 선언해서 변경해줍니다





[6]. withTimeoutOrNull 란?

- withTimeoutOrNull 는 주로 네트워크 통신에서 타임 아웃 처리를 수행 시 사용합니다
- withTimeoutOrNull 는 밀리세컨드 형식으로 타임 아웃 시간을 정의합니다 (ex : withTimeoutOrNull(10000))

 


반응형
Comments