coroutine

· 📚 Study
`CoroutineContext` : 코루틴을 실행하는 실행 환경을 설정하고 관리하는 인터페이스Coroutine Context 구성 요소`CoroutineName` : 코루틴 이름 설정`CoroutineDispatcher` : 코루틴을 스레드에 할당해 실행`Job`: 코루틴의 추상체로 코루틴을 조작`CoroutineExceptionHandler` : 코루틴에서 발생한 예외 처리 Coroutine Context 구성Coroutine Context 구성키 - 값 쌍으로 구성 요소를 관리`CoroutineContext` 객체 간의 더하기 연산자(+)를 사용하여 객체를 구성val coroutineContext: CoroutineContext = newSingleThreadContext("MyThread") + ..
`launch` : 작업 실행 후 결과를 반환하지 않음`async` : 코루틴으로부터 결괏값을 수신 → Deferred 객체 반환 async 사용해 결과값 수신하기async 사용해 Deferred 만들기fun CoroutineScope.async( context: CoroutineContext = EmptyCoroutineContext, // CoroutineDispatcher 설정 가능 start: CoroutineStart = CoroutineStart.DEFAULT, // 지연시작 설정 가능 block: suspend CoroutineScope.() -> T): DeferredDeferred코루틴을 추상화한 객체코루틴으로부터 생성된 결과값을 감싸는 기능을 가짐결과값의 타입은 제네릭 타입  a..
· 📚 Study
코루틴 빌더 함수코루틴을 생성하는 데 사용하는 함수 ex) `launch`, `runBlocking`…코루틴을 만들고 코루틴을 추상화한 Job 객체 생성 → Job 객체로 코루틴의 상태를 추적 및 제어 Join을 사용한 코루틴 순차 처리`join()` : 먼저 처리되어야 하는 코루틴의 실행이 완료될 때까지 호출부의 코루틴을 일시 중단하는 함수💡 delay 함수 - `Thread.sleep()` 해당 함수가 실행되는 동안 스레드가 블로킹돼 사용할 수 없음 - `delay()` 해당 함수가 실행되는 동안 스레드는 다른 코루틴이 사용할 수 있음Join 함수 사용해 순차 처리하기fun main() = runBlocking { val updateTokenJob = launch(Dispatchers.IO) ..
· 📚 Study
Coroutine Dispatcher란?Coroutine을 스레드로 보내 실행시키는 역할스레드 / 스레드 풀을 가지며 코루틴을 실행 요청한 스레드에서 코루틴이 실행되도록 함동작 방식자신에게 실행 요청된 코루틴을 작업 대기열에 적재한 후, 사용할 수 있는 스레드가 생기면 스레드로 보냄`CoroutineDispatcher` 객체에 코루틴의 실행이 요청 됨[CoroutineDispatcher] 실행 요청 받은 코루틴을 작업 대기열에 적재[CoroutineDispatcher] 사용할 수 있는 스레드가 있는지 확인있다면, 코루틴을 해당 스레드로 보냄없다면(모든 스레드가 코루틴을 실행중이라면), 작업 대기열에서 대기하도록 둠스레드 중 하나가 자유로워 졌을 때, 대기열에 있던 코루틴을 스레드로 보냄역할코루틴의 실행을..
점이
'coroutine' 태그의 글 목록