본문 바로가기

coroutine4

[🔥 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.. 2022. 12. 4.
[🔥 Coroutine] #3 예제로 복습하기 안녕하세요 :) 오늘은 예제로 여태까지 1,2장에서 공부한 코루틴에 대해 복습하고자 합니당 다음 포스팅은 Job으로 돌아오겠습니다 🙇🏻‍♀️ CoroutineBuilder 코루틴을 생성하는 함수 1. runBlocking runBlocking내의 코드블록이 수행될 때까지 다른 코드가 수행되지 못하게 Block runBlocking내의 this는 코루틴이 Receiver임을 알 수 있음 Active : 현재 코루틴의 활성화 상태 2. launch 💡 runBlocking과의 차이 : runBlocking은 코드블럭 수행완료까지 다른 블록을 수행하지 못하게 Block, launch는 다른 코드를 함께 수행하게 함 (코드를 큐에 넣어두고 다음 순서를 기다림) ⭐️ 하지만, runBlocking으로 코루틴을 만.. 2022. 11. 12.
[🔥 Coroutine] #2 runBlocking , async 안녕하세요 아주 오랜만입니다 약간의 휴식기를 갖고 왔습니다 :) CoroutineBuilder에 관해선, 이전 포스팅에도 있기 때문에, 간단한 예제를 통해 복습하겠습니다 간단한 예제지만, 코루틴을 처음 접하기 때문에 쉬운 예제부터 시작해 천천히 개념을 명확히 알아보려합니다 🙇🏻‍♀️ 2022.08.30 - [💻 프로그래밍] - [🔥Coroutine] # 1 Coroutine을 배워봅시다 1. runBlocking runBlocking 내의 코드가 완료되기 전까지 mainThread를 종료시키지 않음 -> 동시성이 깨짐 다른 코루틴의 Thread를 중지할 수도 있기 때문에 주로 테스트코드 작성시에 많이 쓰임 테스트 코드를 살펴보겠습니다 @Test fun testRunBlock() = runBlocking .. 2022. 11. 5.
[🔥Coroutine] # 1 Coroutine을 배워봅시다 안녕하세요:) 원래 비동기처리는 RxJava를 사용하고 있었는데, Coroutine은 사용해본적이 없어서 배워볼까 합니다 🧐 왜 Coroutine을 공부하는가? 안드로이드 메인스레드는 1개로 UI를 업데이트 하기 위해 사용되고, 별도로 멈추는 작업이 없다면 16ms마다 UI를 업데이트를 합니다 그런데 만약 이 때 시간이 걸리는 DB 작업, 네트워크 작업을 하게 된다면 크래시가 발생하기 쉽습니다 그럼 이런 의문이 생기죠 메인 스레드를 멈추고 작업을 하면 되는거 아냐? 🤷‍♀️ 하지만, main Thread를 너무 오래 멈추게 되면 ANR이 발생합니다 main Thread를 크래시 없이 사용하기 위해선, UI 이외의 작업은 별도의 스레드에서 해야합니다 보통 콜백을 통해서 이런 위험성을 피했는데, 콜백은 '콜.. 2022. 8. 30.