코루틴 5

[🔥 Coroutine] #5 또 예제로 복습하기 (async, launch)

✏️ 예제를 통한 복습 suspend fun getRandNum1() : Int { delay(1000L) return Random.nextInt(0,500) } suspend fun getRandNum2() : Int { delay(1000L) return Random.nextInt(0,500) } fun main() = runBlocking { val time = measureTimeMills{ val one = getRandNum1() val two = getRandNum2() println("${one} + ${two} = ${one + two}") } println(time) } 순차적으로 실행되어 1000L + 1000L = 2초가 걸림 개별적으로 실행되지만, 순차적으로 실행되어서 항상 get..

[🔥Coroutine] #4 suspend, Job 간단하게 살펴보기

시작 전 복습 한 마디 코루틴이 쓰이는 모든 곳에는 CoroutineScope가 있습니다 CoroutineScope는 CoroutineContext(코루틴을 처리하기위한 정보)를 가지고 있습니다 suspend 코루틴 내에서만 함수를 호출하지 않고, 코드의 일부를 함수로 분리하려면 suspend 키워드를 사용 suspend가 붙은 함수를 사용하려면 1. 그 함수가 suspend이거나 2. CoroutineBuilder를 통해 코루틴을 만들어야한다 suspend fun showName(){ println("showName") delay(500L) println("My name is Kong") } suspend fun showAge(){ println("showAge") delay(1000L) println..

[🔥 Coroutine] #3 예제로 복습하기

안녕하세요 :) 오늘은 예제로 여태까지 1,2장에서 공부한 코루틴에 대해 복습하고자 합니당 다음 포스팅은 Job으로 돌아오겠습니다 🙇🏻‍♀️ CoroutineBuilder 코루틴을 생성하는 함수 1. runBlocking runBlocking내의 코드블록이 수행될 때까지 다른 코드가 수행되지 못하게 Block runBlocking내의 this는 코루틴이 Receiver임을 알 수 있음 Active : 현재 코루틴의 활성화 상태 2. launch 💡 runBlocking과의 차이 : runBlocking은 코드블럭 수행완료까지 다른 블록을 수행하지 못하게 Block, launch는 다른 코드를 함께 수행하게 함 (코드를 큐에 넣어두고 다음 순서를 기다림) ⭐️ 하지만, runBlocking으로 코루틴을 만..

[🔥 Coroutine] #2 runBlocking , async

안녕하세요 아주 오랜만입니다 약간의 휴식기를 갖고 왔습니다 :) CoroutineBuilder에 관해선, 이전 포스팅에도 있기 때문에, 간단한 예제를 통해 복습하겠습니다 간단한 예제지만, 코루틴을 처음 접하기 때문에 쉬운 예제부터 시작해 천천히 개념을 명확히 알아보려합니다 🙇🏻‍♀️ 2022.08.30 - [💻 프로그래밍] - [🔥Coroutine] # 1 Coroutine을 배워봅시다 1. runBlocking runBlocking 내의 코드가 완료되기 전까지 mainThread를 종료시키지 않음 -> 동시성이 깨짐 다른 코루틴의 Thread를 중지할 수도 있기 때문에 주로 테스트코드 작성시에 많이 쓰임 테스트 코드를 살펴보겠습니다 @Test fun testRunBlock() = runBlocking ..

[🔥Coroutine] # 1 Coroutine을 배워봅시다

안녕하세요:) 원래 비동기처리는 RxJava를 사용하고 있었는데, Coroutine은 사용해본적이 없어서 배워볼까 합니다 🧐 왜 Coroutine을 공부하는가? 안드로이드 메인스레드는 1개로 UI를 업데이트 하기 위해 사용되고, 별도로 멈추는 작업이 없다면 16ms마다 UI를 업데이트를 합니다 그런데 만약 이 때 시간이 걸리는 DB 작업, 네트워크 작업을 하게 된다면 크래시가 발생하기 쉽습니다 그럼 이런 의문이 생기죠 메인 스레드를 멈추고 작업을 하면 되는거 아냐? 🤷‍♀️ 하지만, main Thread를 너무 오래 멈추게 되면 ANR이 발생합니다 main Thread를 크래시 없이 사용하기 위해선, UI 이외의 작업은 별도의 스레드에서 해야합니다 보통 콜백을 통해서 이런 위험성을 피했는데, 콜백은 '콜..